qqjianyue代码工

砌java代码
posts - 62, comments - 9, trackbacks - 0, articles - 10
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

hibernate简单入门介绍

Posted on 2008-10-01 09:49 Qzi 阅读(318) 评论(0)  编辑  收藏 所属分类: ssh1.2_2.0_3.1

一.继承关系和关联聚集关系映射
1.整个类层次使用一张表
2.每个叶结点使用一张表,该表保存了该类自己的和所继承的所有属性
3.每个类使用一张表,该表只保存OID以及对应类自己的属性(不含所继承的属性)

1.“1对1”或“1对多”关系的映射,简单地利用外键即可
2.“多对多”关系的映射,引入一个新的表,专门记录这种“多对多”关系

二.编程步骤:事前准备包括建立一个project并且加入外部库
新建一个Project HibernateSample,然后在Project上点右键,选择Properties  Java Build Path  Libraries。选择Add External JARs,然后将Hibernate目录下的hibernate3.jar,以及Hibernate目录下的lib文件夹中所有的jar文件添加进来。
另外我们还必须有MySQL的JDBC驱动,用上面的办法同样把mysql-connector-java-3.1.12-bin.jar添加进我们的Build Path中。

1.创建数据库(例如User表)
2.建立对应数据库的类的属性与操作(例如User类)
3.编写映射数据库表hibernate mapping,命名为***.hbm.xml(例如User.hbm.xml)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
 <class name="sample.User" table="user">
  <id name="id" column="id" type="java.lang.Integer">
   <generator class="native" />
  </id>
  <property name="name" column="name" type="java.lang.String" />
  <property name="age" column="age" type="java.lang.Integer" />
 </class>
</hibernate-mapping>
明显可见关注点包括
A)class中包中的类与数据库中table的对应
B)property中 类中ID和属性与table中字段的对应

4.编写Hibernate配置文件hibernate configurarion file,通常命名:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <!-- 是否显示实际操作数据库时的SQL -->
  <property name="show_sql">true</property>
  <!-- SQL方言,这边设定的是MySQL -->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <!-- JDBC驱动程序 -->
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <!-- JDBC URL -->
  <property name="connection.url">jdbc:mysql://localhost/Sample</property>
  <!-- 数据库用户名 -->
  <property name="connection.username">root</property>
  <!-- 数据库密码 -->
  <property name="connection.password">123456</property>
  <!-- 以下设置对象与数据库表格映像文件 -->
  <mapping resource="sample/User.hbm.xml"/>
 </session-factory>
</hibernate-configuration>
关注点包括:
A)数据库路径, 数据库用户名, 数据库密码,
B)还有就是指定数据库映射文件mapping resource

5.配置log4j.properties
在src目录下点右键,选择import,然后选择General  File System,接着选择Hibernate文件夹下的etc文件夹,再选择log4j.properties文件,最后选择Finish。
关键配置文件:
hbm是映射配置
cfg是密码,用户,以及hbm指定配置
properties是用于配置当前数据库连接的属性配置

6.编程操作数据库过程
使用对象增加数据项:
A)Configuration配置Configuration config = new Configuration().configure();
B)Session工厂获得SessionFactory sessionFactory = config.buildSessionFactory();
C)Session获得Session session = sessionFactory.openSession();
D)Transaction事务启动Transaction tx = session.beginTransaction();
E)建立映射数据的实体类(例如User的一个实例)
F)session操作(例如session.save(user)插入到数据库一个user的对象)
G)关键的Transaction事务提交,tx.commit();
H)清理包括Transaction对象,session对象,sessionFactory对象的有顺序清理

使用Criteria查询数据
A)配置Configuration,SessionFactory,Session与上面相同
B)创建Criteria criteria=session.createCriteria(User.class);
C)创建User列表List users = criteria.list();
D)使用迭代器Iterator iterator = users.iterator();
E)iterator.hasNext(),iterator.next()的使用
F)criteria.add(Expression.eq("name","hibernateUser2"));加上查询约束
G)users = criteria.list();将会按照查询约束得到列表.

使用鼓励的HQL的Query查询
A)创建Query例如Query query = session.createQuery("from User");
B)获得数据List uers = query.list();
C)遍历器使用Iterator iterator = users.iterator();又如iterator.hasNext();和iterator.next();
D)使用过滤查询
query = session.createQuery("from User user where user.name like ?");
query.setParameter(0, "hibernateUser2");Query的setParameter()方法第一个参数是指定 ? 出现的位置,从 0 开始,第二个参数则是设定查询条件。
然后再List uers = query.list();获得的将是满足username==hibernateUser2的条件的结果
E)清除session和sessionFactory使用close方法.


hibernate_rar

只有注册用户登录后才能发表评论。


网站导航: