1. hibernate的简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
1.1 全自动的ORM对象关系映射框架.
1.2 Pojo和数据库表中间桥梁.
1.3 可以代替JDBC.
1.4 当前使用的版本4.3.11
1.5 Hibernate 支持多个数据库CRUD.
1.6 都是自动生成的sql语句,使程序员不用再去关心复杂的sql语句。零sql
2. 环境搭建
2.1 导入jar
antlr-2.7.7.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.jar hibernate-core-4.3.11.Final.jar hibernate-jpa-2.1-api-1.0.0.Final.jar jandex-1.1.0.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.1.3.GA.jar jboss-logging-annotations-1.2.0.Beta1.jar jboss-transaction-api_1.2_spec-1.0.0.Final.jar ojdbc6.jar |
2.2创建hibernate的核心配置文件,
可以参考:01 资料\hibernate-release-4.3.11.Final\project\etc\ 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> <!-- 创建sessionfactory工厂: --> <session-factory> <!-- 在工厂中定义要连接的数据库。表示定义数据库的方言:版本,oracle10g跟oracle11g一样。 property name 是存储的key property标签中间存储的是值。可以参考etc/hibernate.properties --> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- 定义数据库驱动 --> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!-- 定义数据库url 1521:后面的是数据库名--> <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <!-- 定义用户名 --> <property name="hibernate.connection.username">scott</property> <!-- 定义密码 --> <property name="hibernate.connection.password">123</property>
<!-- 显示sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 格式化sql语句 --> <property name="hibernate.format_sql">true</property> <!-- 定义一个hibernate的映射文件:映射的那个实体类.xml --> <mapping resource="com/bjsxt/pojo/Stu.hbm.xml"/>
</session-factory> </hibernate-configuration> |
2.3 创建数据库表对应的实体类
public class Stu { // 定义属性名 private Integer id; private String name; private String pwd; } |
2.4 创建对应的映射文件 映射配置文件名称随意
<?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> <!-- 定义实体类:映射的表 name:实体类的全路径 table:数据库的表名称 --> <class name="com.bjsxt.pojo.Stu" table="stu"> <!-- id:主键 name:指的是实体类的属性名称 column:指的是数据库表的列名称。 type:是用来定义属性的数据类型。可以省略。 --> <id name="id" column="id"> <!-- oracle数据库使用序列作为主键. --> <generator class="sequence"> <!-- param标签中间是序列名称 --> <param name="sequence">seq</param> </generator> </id> <!-- 配置数据库表中的普通属性 --> <property name="name" column="name"></property> <property name="pwd" column="pwd"></property> </class> </hibernate-mapping> |
2.5 测试
public class TestHibernate { @Test public void testHibernate() { // 读取配置文件 Configuration configuration = new Configuration().configure("hibernate.xml"); // 创建会话工厂 SessionFactory sessionFactory = configuration. // 创建session 会话 Session session = sessionFactory.openSession();
System.out.println(session); // 调用session中的方法了。 Stu stu = (Stu) session.get(Stu.class, 1);
System.out.println(stu);
session.close(); } } |