锁定老帖子 主题:Hibernate入门
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-28
最后修改:2009-10-29
Hibernate对JDBC API进行了封装,负责持久化Java对象;在软件架构的分层中位于持久层,封装了访问数据的细节,使业务层更能专注业务的处理;它是一种ORM映射工具,用于建立面向对象的域模型和关系数据模型之间的映射。
一、ORM简介 ORM(对象-关系映射)是Object-Relation Mapping的简称,指的是在单个组件中负责所有实体域对象的持久化,封装数据访问细节。ORM作为一个中间件,很好的解决了面向对象和面向关系之间的天然阻抗。ORM采用元数据来描述对象-关系映射,通常采用XML格式。
二、Hibernate API简介 Hibernate对JDBC做了轻量级的封装,故Java应用程序即可通过Hibernate的API来访问数据库也可以直接使用JDBC来访问数据库。 Hibernate API中的核心接口层次架构关系如图:
1.Configuration接口:配置Hibernate,创建SessionFactory对象 2.SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建Session对象 3.Session接口:负责对对象的增、删、改、查操作 4.Transaction接口:管理事务 5.Query和Criteria接口:主要用于数绝库的查询操作
三、使用Hibernate 在Java应用中使用Hibernate包含以下几个步骤: 1.创建Hibernate的配置文件 2.创建持久化类 3.创建对象-关系映射文件 4.通过Hibernate API编写访问数据库的代码 举例说明: 现有数据库表user: mysql> select * from t_user; +----+------+-----+ | u_id | u_name | u_age | +----+------+-----+ | 1 | test | 18 | +----+------+-----+ 1 row in set 现在Java中使用Hibernate向t_user增加一条记录u_name=hibernate,u_age=20,u_id为设置为自动增长。 1.创建Hibernate的配置文件hibernate.cfg.xml: <?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"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.username">mysql</property> <property name="connection.url">jdbc:mysql://localhost:3306/user</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="myeclipse.connection.profile">MySQL</property> <property name="connection.password">mysql</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> </session-factory> </hibernate-configuration> 2.创建持久化类UserPO: package com.china.po; import java.io.Serializable; public class UserPO implements Serializable{ private int id; private String name; private int age; public UserPO(){ } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 3.创建对象-关系映射文件UserPO.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> <!-- name和table表示PO对象和数据库表的对应关系 --> <class name="com.china.po.UserPO" table="t_user"> <!-- 标识主键 --> <id name="id" column="u_id" type="int"> <!-- 设置u_id为自动增长 --> <generator class="increment"></generator> </id> <!-- 设置对象普通属性和数据库表字段的对应关系 --> <property name="name" column="u_name" type="java.lang.String"></property> <property name="age" column="u_age" type="int"></property> </class> </hibernate-mapping> 4.在hibernate.cfg.xml中配置UserPO.hbm.xml,即在session-factory中添加一个子元素: <mapping resource="com/lovo/po/PetPO.hbm.xml"/> 5.使用Hibernate API来访问数据库: package com.china.dao; import org.hibernate.Session; import org.hibernate.Transaction; import com.china.po.UserPO; import com.china.util.HibernateSessionFactory; public class UserDAO { public void addUser(UserPO user){ //创建session对象 Session session = HibernateSessionFactory.getSession(); //开启事务 Transaction trans = session.beginTransaction(); //执行保存user操作 session.save(user); //提交事务 trans.commit(); //关闭连接 session.close(); } } 6.编写测试mian方法: package com.china.test; import com.china.dao.UserDAO; import com.china.po.UserPO; public class Test { public static void main(String[] args) { UserPO user = new UserPO(); user.setName("hibernate"); user.setAge(20); UserDAO dao = new UserDAO(); dao.addUser(user); } } 再次查看表t_user,操作成功 mysql> select * from t_user; +------+-----------+-------+ | u_id | u_name | u_age | +------+-----------+-------+ | 1 | test | 18 | | 2 | hibernate | 20 | +------+-----------+-------+ 2 rows in set 汗!不小心发到坛子来了,也没法修改,纯属新手读书笔记,各位大虾不要见怪。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-29
我觉得写的很好
|
|
返回顶楼 | |
浏览 2931 次