Hibernate简介:hibernate是一个优秀的持久层ORM框架
ORM:object/relation mapping【对象/关系 映射】
环境搭配 -----> 三拷三配
1、拷贝hibernate的jar包(hibernate的jar包可以从官网上下载zip然后解压找到核心包拷贝到项目的lib目录中)
2、拷贝jdbc驱动包到lib目录
3、拷贝log4j的property日志文件
#to console# log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n #to file# log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=sunjob.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n #error/warn/info/debug# log4j.rootLogger=info, stdout, file
log4j.appender.file.File=sunjob.log指定将日志填写在sunjob.log文件中,可以自定义命名放在项目根目录下
4、配置总配置文hibernate.cfg.xml(一般不改文件名,因为在读取该总配置文件的时候要根据这个文件名进行寻找该文件),将文件创建在src目录下
<?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">
MysqlConn
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.password">admin</property>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/s61
</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="pojo/UserInfo.hbm.xml" />
</session-factory>
</hibernate-configuration>
上面的代码是hibernate总配置文档的头部描述该文件是hibernate文件,此头部信息可以去下载的hibernate的zip下载包中找到hibernate的配置文件中复制粘贴到自己的配置文件中
5、配置pojo文件
一个pojo类对应一个表,一个字段对应一个类属性,一条记录对应一个对象,实际上就是将数据库映射成一个类,然后把操作数据库的面向关系方式转换为面向对象的操作方式
简化操作数据库,是整个hibernate实现的核心
例如:数据库中的userinfo表中:userId ,username,password字段
对应的pojo类:
public class UserInfo{ private int userId; private String username; private String password; ..... 每个字段对应的getter/setter方法 }
6、配置pojo的映射文件
userInfo类对应的pojo映射文件:userInfo.hbm.xml(命名规则是类名.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"> <!-- xml的头部信息,和hibernate总配置文档的头部信息是不一样的 catalog:数据库 id标签用来设置表主键,子标签generator用来设置主键的生成策略 property标签用来设置普通属性 --> <hibernate-mapping> <class name="UserInfo" table="userinfo" catalog="s61"> <id name="userId" type="java.lang.Integer"> <column name="userId" /> <generator class="identity" /> </id> <property name="username" type="java.lang.String"> <column name="username" /> </property> <property name="password" type="java.lang.String"> <column name="password" /> </property> </class> </hibernate-mapping>
hibernate的使用 --->七大使用步骤
1、读取总的配置文件
2、创建session工厂(Java程序和数据库之间的一次会话,session其实就是对connection的封装)
3、获取session
4、开启事务
5、持久化操作
6、提交事务(查询不需要事务,增删改需要事务,事务的四大特征:原子性、一致性、隔离性、持久性-->ACID)
7、关闭session
public class Test{ public static void main(String [] args){ //1、读取总的配置文件hibernate.cfg.xml Configuration configuration = new Configuration().configure(); //2、创建session工厂 session就是对connection的封装 SessionFactory sessionFactory = configuration.buildSessionFactory(); //3、得到sessiod对象 Session session = sessionFactory.openSession(); //4、开启事务 Transaction transaction = session.beginTransaction(); //5、持久化操作 UserInfo userInfo= new UserInfo (); userInfo.setUserId("15408300240"); userInfo.setUsername("天穹"); userInfo.setPassword("123456"); session.save(userInfo); //6、提交事务 transaction.commit(); //7、关闭session session.close(); } }