1.初识hibernate
简介
hibernate是一种Object-relationship-mapping的框架。
hibernate可以让数据库操作以面向对象的方式进行。
hibernate屏蔽不同数据库sql语句之间的区别,面向接口编程。
配置文件
hibernate主配置文件配置数据库参数,名称为hibernate.cfg.xml。放在src根目录。
hibernate对象关系映射文件配置对象和表的映射规则,名称为ModelName.hbm.xml。放在对应Model包下。
hibernate库
使用eclipse的user library功能添加hibernate库,包括官方给出的lib包中的依赖包已经required文件夹下的包。另外需单独下载slf4j-nop-version.jar,并添加到library中。
数据库驱动如mysql-connector-java-5.1.22-bin.jar。
hibernate初步应用
hibernate为访问数据库提供便捷的接口,使得我不需要写sql语句就可以将“对象”插入到“表”中。
hibernate处于数据库访问层即dao层,它是dao的一实现方式。
hibernate的访问接口为:
Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(对象); session.getTransaction().commit();
使用hibernate向mysql数据库中插入一条记录
mysql中建数据库hibernate,表student(id int primary key,name varchar(20),age int).
建立java_project,导入hibernate库和驱动。
建立hibernate.cfg.xml,从官方文档拷贝修改参数:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!--SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!--Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!--Echo all executed SQL to stdout --> <property name="show_sql">true</property> <mapping resource="zhx1529/model/Student.hbm.xml" /> </session-factory> </hibernate-configuration>
建立Student类,它是一个bean,3个属性和数据库中表student一一对应,放在我的包中:
package zhx1529.model; public class Student { private int id; private String name; private int age; 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; } }
写O-R-Mapping文件,Student.hbm.xml。从官方文件拷贝代码并修改。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="zhx1529.model"> <class name="Student"> <id name="id"></id> <property name="age"/> <property name="name"/> </class> </hibernate-mapping>
写测试类,在main方法中写如下:
Student student = new Student(); student.setId(3); student.setAge(23); student.setName("honbaa"); Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(student); session.getTransaction().commit();
运行,查询数据库,已经将“对象”插入为一条记录。