﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-aijava-文章分类-Hibernate持久层框架学习</title><link>http://www.blogjava.net/hayun/category/16895.html</link><description>welcome to my online log ! open java new world!
Taste java charm........</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:29:14 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:29:14 GMT</pubDate><ttl>60</ttl><item><title>我的第一个Hibernate练习</title><link>http://www.blogjava.net/hayun/articles/h2.html</link><dc:creator>苑</dc:creator><author>苑</author><pubDate>Sun, 05 Nov 2006 12:38:00 GMT</pubDate><guid>http://www.blogjava.net/hayun/articles/h2.html</guid><wfw:comment>http://www.blogjava.net/hayun/comments/79256.html</wfw:comment><comments>http://www.blogjava.net/hayun/articles/h2.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hayun/comments/commentRss/79256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hayun/services/trackbacks/79256.html</trackback:ping><description><![CDATA[
		<p>首先打开mySQL数据新建一个数据库HibernateTest<br />create database HibernateTest;<br />use HibernateTest;<br />CREATE TABLE USER ( <br />    user_id CHAR(32) NOT NULL PRIMARY KEY, <br />    name VARCHAR(16) NOT NULL, <br />    sex CHAR(1), <br />    age INT <br />);<br />然后编写一个User.java文件<br /><font color="#000080">public class User { <br />    private String id; <br />    private String name; <br />    private char sex; <br />    private int age; <br /><br />    public int getAge() { <br />        return age; <br />    } <br /><br />    public String getId() { <br />        return id; <br />    } <br /><br />    public String getName() { <br />        return name; <br />    } <br /><br />    public char getSex() { <br />        return sex; <br />    } <br /><br />    public void setAge(int i) { <br />        age = i; <br />    } <br /><br />    public void setId(String string) { <br />        id = string; <br />    } <br /><br />    public void setName(String string) { <br />        name = string; <br />    } <br /><br />    public void setSex(char c) { <br />        sex = c; <br />    } <br />}</font><br /><br />User.hbm.xml文件是用来描述数据库中表的字段信息的配置文件内容如下：<br /><font color="#000080">&lt;?xml version="1.0"?&gt; <br />&lt;!DOCTYPE hibernate-mapping <br />    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" <br />    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"&gt; <br /><br />&lt;hibernate-mapping&gt; <br /><br />    &lt;class name="onlyfun.caterpillar.User" table="USER"&gt; <br /><br />        &lt;id name="id" type="string" unsaved-value="null"&gt; <br />            &lt;column name="user_id" sql-type="char(32)" /&gt; <br />            &lt;generator class="uuid.hex"/&gt; <br />        &lt;/id&gt; <br /><br />        &lt;property name="name" type="string" not-null="true"&gt; <br />            &lt;column name="name" length="16" not-null="true"/&gt; <br />        &lt;/property&gt; <br /><br />        &lt;property name="sex" type="char"/&gt; <br /><br />        &lt;property name="age" type="int"/&gt; <br /><br />    &lt;/class&gt; <br /><br />&lt;/hibernate-mapping&gt;<br /><br /></font><font color="#000000">hibernate.cfg.xml文件时用来连接数据库时使用的配置文件</font></p>
		<p>
				<font color="#000080">&lt;?xml version='1.0' encoding='big5'?&gt; <br />&lt;!DOCTYPE hibernate-configuration <br />    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" <br />    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"&gt; <br /><br />&lt;hibernate-configuration&gt; <br /><br />    &lt;session-factory&gt; <br /><br />      <br />        &lt;property name="show_sql"&gt;true&lt;/property&gt; <br /><br />        &lt;property name="dialect"&gt;net.sf.hibernate.dialect.MySQLDialect&lt;/property&gt; <br /><br />        &lt;property name="connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; <br /><br />        &lt;property name="connection.url"&gt;jdbc:mysql://localhost/HibernateTest&lt;/property&gt; <br /><br />        &lt;property name="connection.username"&gt;caterpillar&lt;/property&gt; <br />    <br />        &lt;property name="connection.password"&gt;123456&lt;/property&gt; <br /><br /> <br />        &lt;mapping resource="User.hbm.xml"/&gt; <br /><br />    &lt;/session-factory&gt; <br /><br />&lt;/hibernate-configuration&gt;<br /></font>
				<font color="#000000">然后我们编写一个测试类来测试一下刚才的配置<br /></font>
				<font color="#000080">import net.sf.hibernate.*; <br />import net.sf.hibernate.cfg.*; <br /><br />public class HibernateTest { <br />    public static void main(String[] args) throws HibernateException { <br />        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); <br /><br />        User user = new User(); <br />        user.setName("caterpillar"); <br />        user.setSex('M'); <br />        user.setAge(28); <br /><br />        Session session = sessionFactory.openSession(); <br />        Transaction tx= session.beginTransaction(); <br />        session.save(user); <br />        tx.commit(); <br />        session.close(); <br />        sessionFactory.close(); <br />       <br />        System.out.println("新增資料OK!請先用MySQL觀看結果！"); <br />    } <br />}</font>
		</p>
<img src ="http://www.blogjava.net/hayun/aggbug/79256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hayun/" target="_blank">苑</a> 2006-11-05 20:38 <a href="http://www.blogjava.net/hayun/articles/h2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何学习Hibernate</title><link>http://www.blogjava.net/hayun/articles/H1.html</link><dc:creator>苑</dc:creator><author>苑</author><pubDate>Sun, 05 Nov 2006 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/hayun/articles/H1.html</guid><description><![CDATA[
		<div class="postbody">Hibernate入门容易，掌握精通我也不敢自夸。我第一遍看Hibernate文档的时候也觉得很吃力，但不是因为Hibernate难掌握而感到吃力，是因为Hibernate文档处处都是持久层设计的经验和最佳实践。Hibernate文档准确的来说，绝大部分内容都在讲对象的持久层设计，而不是简单的Hibernate使用，使用问题查Java doc就够了。所以学习Hibernate，主要是在学习持久层的设计模式，如果你把Hibernate文档都看完了，还整天只会提那些 Hibernate的配置问题，Hibernate的类调用问题，我觉得这样的人还没有真正的入门，算是白学了。 <br /><br />我对Hibernate 的那些配置也不是特别纯熟，每次写hbm，都要对照文档一点点的检查；类调用参数也不太记得，写代码也要Java doc随时备查。但是我在学习Hibernate的时候即集中所有精力来理解Hibernate的运行原理，集中精力来掌握持久层设计应该把握的原则和技巧，这些才对我是最重用的东西。毫不夸张的说，学习完Hibernate，我对JDBC的编程也提高了一大截，更不要说对于J2EE架构的持久层的框架设计，基本上是了然于胸了，即使将来换了API，不用Hibernate的，改用JDO，Castor什么的，这些经验一样照用。 <br /><br />学习Hibernate主要不是在学习Hibernat怎么配置，用工具怎么生成hbm文件，如果你把重点放在这里，基本上等于白学了Hibernate。Hibernate的精华在于无与伦比的灵巧的对象持久层设计，这些持久层设计经验不会因为你不用Hibernate而丧失掉，我自己学习Hibernate，已经明显感觉到对持久层设计能力已经长了很多经验值了，这些经验甚至不光可以用在Java上，用在.net上也是一样。所以Hibernate配置的学习，我只是简单看看，用的时候知道到那里去查就行了，一堆复杂的生成工具我根本就看都不去看，这样算下来，掌握Hibernate的配置，可以用Hibernate来替代JDBC写程序，不过花上3天时间就足够了。我想3天时间对你来说不算很奢侈的学习代价吧。 <br /><br />为什么我这么强调学习Hibernate的对象持久层设计理念呢？那就看你的理想是想一辈子做一个程序员呢？还是想向更高的方向发展呢？从纯做技术的角度来说，职业发展的最高点是“系统架构师”，Bill Gates不是还叫做微软的首席系统架构师吗？System Architect职位需要的是你的学习和领悟能力，如果你不能把学习Hibernate得到的设计经验运用到其它地方，那么你是失败的，也没有资格做 System Architect。 <br />不管JDO也好，Hibernate也好，TopLink也好，CocoBase也好，还是 Castor，还是什么Torque，OJB，软件的使用和配置方法可以各异，但本质上都是ORM，都是对JDBC的对象持久层封装，所以万变不离其宗，如果你完整的学习和掌握Hibernate花了1个月的时间，那么你再学习OJB的时间不应该超过1个星期，因为你已经把对象持久层设计都了然于胸了，你需要的只是熟悉一下OJB的API和配置罢了，至于怎么运用OJB进行持久层的开发你早就已经熟悉了。 <br /><br />所以当你掌握了两种以上的ORM，你应该能够不拘于使用的ORM软件的限制，设计出适合于你的项目的持久层来，这才是System Architect的水准。用金庸小说来打个比方来说吧，张无忌学太极剑，<font style="BACKGROUND-COLOR: #ffffff" face="Georgia" color="#ff3300" size="4"><strong>只记剑意</strong></font>，不记剑招，这才是真正的高手，而低手就只会去学习剑招，而不去领会剑招背后蕴含的剑意，所以一辈子都是低手，永远不能真正学会太极剑。所以周颠看到张三丰第二次演示太极剑，招式完全不同就以为是另一套东西，其实本质上都一样。学习Hibernate也不要舍本逐末的去学各种五花八门的工具，重点掌握它的对象持久层设计理念。 </div>
<img src ="http://www.blogjava.net/hayun/aggbug/79234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hayun/" target="_blank">苑</a> 2006-11-05 18:02 <a href="http://www.blogjava.net/hayun/articles/H1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>