Hibernate的创始人Gavin King EJB 3.0专家委员会成员 JBoss核心成员之一 《Hibernate in Action》的作者 优秀的Java持久化层解决方案 主流的对象-关系映射工具
Hibernate的优点
简化了JDBC 繁琐的编码 可移植性好Hibernate的缺点
不适合需要使用数据库的特定优化机制的情况不适合大规模的批量数据处理下面我就带着大家做一遍简单的新增
1.首先引入jar如果没有的小伙伴可以去Hibernate的官方网站http://hibernate.org 托管网站https://sourceforge.net/projects/hibernate/files/ 推荐下载:hibernate-distribution-3.6.10.Final-dist.zip
2.创建持久化类并配置相关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="com.hhb.entity.Dept" table="Dept"> <id name="deptno" type="java.lang.Integer">name实体类名称 type类型这个一定要遵守映射文件的别名 <column name="DEPTNO"></column>数据库列名 <!-- 主键增长的方式 assigned:用户自己填写--> <generator class="assigned"> </generator> </id> <property name="dname" type="string"> <column name="DNAME"></column> </property> <property name="loc" type="string"> <column name="LOC"></column> </property> </class> </hibernate-mapping>3.编写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" > <hibernate-configuration> <session-factory> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>加载驱动 <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>连接地址我这里用的是Oralce数据库 <property name="connection.username">scott</property>数据库用户名 <property name="connection.password">ok</property>数据库密码 <property name="dialect">org.hibernate.dialect.OracleDialect</property>是用什么语言的sql <property name="show_sql">true</property>显示sql语句 <property name="format_sql">true</property> <mapping resource="Dept.hbm.xml"/>引用Dept映射文件 </session-factory> </hibernate-configuration>4. 创建Hibernate API
public class Unit { private static SessionFactory factory; //会话工厂 static { Configuration configuration = new Configuration().configure("hiberaten.cfg.xml");//引用配置文件 factory = configuration.buildSessionFactory();//构建 } public Session openSession() {//打开 return factory.openSession(); } public void closeSession(Session session) {//关闭 if (session != null) { session.close(); } } }5.创建一个实现类
Unit un=new Unit(); Session session=un.openSession(); Transaction tx = session.beginTransaction();//创建事务并开启 try { // 执行持久化操作 session.save(dept); // 提交事物 tx.commit(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); // 回滚事物 tx.rollback(); } //关闭链接 un.closeSession(session);6.创建测试类
这就是一个简单的新增 修改使用update删除使用delete别忘了提交事务
下面给大家演示下查询 查询可以使用load也可以使用get
注意load是懒加载的方式不用不回去加载而get是不管用不用都去查一遍
如果说我在用完load后关闭会话在test类它会出错而get不会
public Dept all(Integer id){ Session session = un.openSession(); Dept dept = (Dept) session.load(Dept.class,id); return dept; }