初学hibernate框架
2013-01-13 23:16
387 查看
今天初次学习了hibernate,学习了hibernate的一些原理性知识。hibernate是基于ORM的持久层框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。ORM(Object Relation Map)即对象关系映射,其映射方式有两种:①注解映射,②xml配置文件映射,其中第一种方式比较简单,但是耦合对要高,第二种方式虽然要复杂一点但是耦合度相对低了很多,因为我们开发系统都追求高内聚、低耦合,所以第二种方式较常用。
使用hibernate要做到“三拷三配、六个准备,七个步骤”,这是口诀。
三拷三配、六个准备:三拷是指拷JDBC驱动包、hibernate开发包、log4j包,三配是指配置pojo类、配置类与数据库表之间的映射、配置总配置文件(用于数据库连接的)。
首先讲三拷三配、六个准备,拷JDBC驱动包不用多讲,因为hibernate也是基于JDBC的,只是对其进行了封装,所以JDBC驱动包必不可少。既然是使用hibernate,那hibernate开发包也必不可少,用来提供各种类的。log4j包用来记录日志信息的,这个也是非常有用的,因为以后做的系统都要发布到服务器上面去的,你不可能每时每刻都守在服务器旁边看有没有出问题,有了日志就可以省很多事了。只要定期去查看日志文件就好了,所有问题都会记录在日志文件中。 三配中配置pojo也不用多讲,跟以前差不多,一个表对应一个pojo类就ok了。因为hibernate是基于对象关系映射的框架,所以pojo类对象与关系表的映射配置必不可少,需要配置三个东西:表和类的映射、属性和字段的映射、表和表的关系(如果两个表有主外键关系的话,这里只有一个表所以不用配置),配置代码如下:
pojo中Student类
Student类与student表的映射student.hbm.xml代码:
最后是总配置文件hibernate.cfg.xml的配置(有可视化界面操作的),该配置是用于建立数据库连接的,其代码如下:
到此为止准备工作已经完成了,接下来就是操纵数据库了。操作数据库有七个步骤:
①读取配置文件
②创建session工厂
③打开session
④开始事务:hibernate中增删改一定要用事务,查询可以不用
⑤处理事务,对数据表的增(save)、删(delete)、改(update)
⑥提交事务或者回滚事务
⑦关闭session。
下面是对表student插入数据的一个例子:
下面是对查询表student的例子:
查询数据如果是根据主键查找一条记录的时候可以用session的get()方法,查询多条记录则必须用HQL(Hibernate Query Language),HQL和SQL语句差不多,只是将表明改为类名、将字段名改为属性名。
使用hibernate要做到“三拷三配、六个准备,七个步骤”,这是口诀。
三拷三配、六个准备:三拷是指拷JDBC驱动包、hibernate开发包、log4j包,三配是指配置pojo类、配置类与数据库表之间的映射、配置总配置文件(用于数据库连接的)。
首先讲三拷三配、六个准备,拷JDBC驱动包不用多讲,因为hibernate也是基于JDBC的,只是对其进行了封装,所以JDBC驱动包必不可少。既然是使用hibernate,那hibernate开发包也必不可少,用来提供各种类的。log4j包用来记录日志信息的,这个也是非常有用的,因为以后做的系统都要发布到服务器上面去的,你不可能每时每刻都守在服务器旁边看有没有出问题,有了日志就可以省很多事了。只要定期去查看日志文件就好了,所有问题都会记录在日志文件中。 三配中配置pojo也不用多讲,跟以前差不多,一个表对应一个pojo类就ok了。因为hibernate是基于对象关系映射的框架,所以pojo类对象与关系表的映射配置必不可少,需要配置三个东西:表和类的映射、属性和字段的映射、表和表的关系(如果两个表有主外键关系的话,这里只有一个表所以不用配置),配置代码如下:
pojo中Student类
package com.pojo; import java.io.Serializable; import java.util.Date; public class Student implements Serializable { private int sid; private String sname; private Date sage; public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Date getSage() { return sage; } public void setSage(Date sage) { this.sage = sage; } }
Student类与student表的映射student.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.pojo.Student" table="student"> <!-- 字段与属性映射之主键映射 --> <id name="sid" column="sid"> <generator class="native"></generator> </id> <!-- 字段与属性映射 --> <property name="sname" column="sname"></property> <property name="sage" column="sage"></property> </class> </hibernate-mapping>
最后是总配置文件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="myeclipse.connection.profile">Mysql</property> <property name="connection.url"> jdbc:mysql://127.0.0.1:3306/test </property> <property name="connection.username">root</property> <property name="connection.password">admin</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="show_sql">true</property> <mapping resource="com/pojo/student.hbm.xml" /> </session-factory> </hibernate-configuration>
到此为止准备工作已经完成了,接下来就是操纵数据库了。操作数据库有七个步骤:
①读取配置文件
②创建session工厂
③打开session
④开始事务:hibernate中增删改一定要用事务,查询可以不用
⑤处理事务,对数据表的增(save)、删(delete)、改(update)
⑥提交事务或者回滚事务
⑦关闭session。
下面是对表student插入数据的一个例子:
package com.test; import java.sql.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.pojo.Student; public class 插入数据 { /** * @param args */ public static void main(String[] args) { //1.读取配置文件 Configuration cfg = new Configuration().configure(); //2.创建session工厂 SessionFactory factory = cfg.buildSessionFactory(); //3.打开session Session session = factory.openSession(); //4.新建事务:hibernate中增删改一定要用事务,查询可以不用 Transaction tr = session.beginTransaction(); try { //5.处理事务 Student s = new Student(); s.setSname("xinxin"); s.setSage(Date.valueOf("1992-10-09")); session.save(s); //6.提交事务 tr.commit(); } catch (Exception e) { //6.出现问题,事务回滚 tr.rollback(); } //7.关闭会话 session.close(); } }
下面是对查询表student的例子:
package com.test; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.pojo.Student; public class 查询所有 { /** * @param args */ public static void main(String[] args) { //读取配置文件 Configuration cfg = new Configuration().configure(); //创建session工厂 SessionFactory factory = cfg.buildSessionFactory(); //打开session Session session = factory.openSession(); //批量查询用HQL(表名改类名,字段名改属性名) Query query = session.createQuery("from Student where sid=?"); //这里给问号赋值时是从0开始的 query.setInteger(0, 2); List<Student> list = query.list(); for (Student student : list) { System.out.println(student.getSname()); } session.close(); } }
查询数据如果是根据主键查找一条记录的时候可以用session的get()方法,查询多条记录则必须用HQL(Hibernate Query Language),HQL和SQL语句差不多,只是将表明改为类名、将字段名改为属性名。
相关文章推荐
- hibernate框架初学
- Hibernate框架初学笔记
- Hibernate框架 初学
- 初学hibernate框架
- Hibernate学习笔记一 使用idea开发工具搭建框架
- 深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式
- JEE5标准与Struts/Spring/Hibernate等诸多开源框架的比较分析
- 关于加了hibernate 框架的项目启动特别慢的问题
- 今天把我以前封装的简单的框架拿出来,给初学的兄弟先感受一下
- hibernate 拦截器和事件框架
- android orm映射框架(类似hibernate)基本使用
- Eclipse上搭建SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)框架-附源码
- 三大框架之Hibernate环境搭建及入门
- 如何在eclipse中使用hibernate持久化框架
- Java框架之Spring、Struts、Hibernate详解--(六)
- 三大框架整合异常之No Hibernate Session bound to thread, and configuration does not allow creation of non-tran
- 搭载Hibernate框架以及入门程序
- Hibernate框架学习笔记02
- 如何在myeclipse中使用Hibernate框架
- java基础之框架hibernate