Hibernate详细教程使用

一、快速起步

新建一个maven项目

导入依赖

<dependencies>

        <dependency>
            <groupId>antlr</groupId>
            <artifactId>antlr</artifactId>
            <version>2.7.7</version>
        </dependency>

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>4.0.2.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.2.4.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>1.0.1.Final</version>
        </dependency>

        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.15.0-GA</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.1.0.GA</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.spec.javax.transaction</groupId>
            <artifactId>jboss-transaction-api_1.1_spec</artifactId>
            <version>1.0.1.Final</version>
        </dependency>

        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>

	<!-- IDEA无法自动读取java文件下的xml文件,要配置声明编译JAVA目录下的文件 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

配置文件

dtd约束在官方文件上有

<?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.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF8</property>

        <!-- 配置Hibernate的基本信息 -->
        <!-- 1.hibernate所使用的数据库方言-》哪种数据库 -->
        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

        <!-- 2.执行操作时是否再控制台打印SQL -->
        <property name="show_sql">true</property>

        <!-- 3.是否对SQL进行格式化 -->
        <property name="format_sql">true</property>

        <!-- 4.指定自动生成数据表的策略 -->
        <property name="hibernate.hbm2ddl.auto">update</property>  

    </session-factory>

</hibernate-configuration>

实体类

public class Person {

    private Integer personId;
    private String personName;
    private Integer personAge;

    public Person() {
    }

    @Override
    public String toString() {
        return "Person{" +
                "personId=" + personId +
                ", personName='" + personName + '\'' +
                ", personAge=" + personAge +
                '}';
    }

    public Person(String personName, Integer personAge) {
        this.personName = personName;
        this.personAge = personAge;
    }

    public Integer getPersonId() {
        return personId;
    }

    public void setPersonId(Integer personId) {
        this.personId = personId;
    }

    public String getPersonName() {
        return personName;
    }

    public void setPersonName(String personName) {
        this.personName = personName;
    }

    public Integer getPersonAge() {
        return personAge;
    }

    public void setPersonAge(Integer personAge) {
        this.personAge = personAge;
    }
}

映射配置

<?xml version="1.0"?>
<!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/hibernate/entity/Person" table="PERSON">

        <!--
         name:表对应类的全类名
         table: 类对应的表名
            id标签:表的主键
                name:映射类的属性名
                type:属性类型全类名
                column:对应表的字段名
                generator:主键生成策略
            property:非主键的其他字段映射
                name:映射类的属性名
                type:属性类型全类名
                column:对应表的字段名

         -->
        <id name="personId" type="java.lang.Integer">
            <column name="PersonId" />
            <!-- 指定主键的生成方式:
                native:数据库底层生成方式
            -->
            <generator class="native" />
        </id>
        <property name="personName" type="java.lang.String">
            <column name="PersonName" />
        </property>
        <property name="personAge" type="java.lang.Integer">
            <column name="PersonAge" />
        </property>
    </class>

</hibernate-mapping>

在hibernate核心配置文件中配置指明映射配置文件位置

<!-- 5.指定关联的 hbm.xml 文件 -->
         <mapping resource="com/hibernate/entity/Person.hbm.xml" />

 新增测试

public class test {

    @Test
    public void test(){
        //1.创建SessionFactory对象
        SessionFactory sessionFactory = null;
        //1)创建Configuration对象:对应Hibernate的基本配置信息和对象关系映射信息
        Configuration configuration = new Configuration().configure();
        /**
         * 4.0以前是这样创建的
         * sessionFactory = configuration.buildSessionFactory();
         */
        //2)创建一个ServiceRegistry对象:Hibernate4.x新添加的对象-》Hibernate的任何配置和服务都需要再该对象中注册后才能有效
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        //3)创建一个SessionFactory
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        //2.创建一个Session对象
        Session session = sessionFactory.openSession();
        //3.开启事务
        Transaction transaction = session.beginTransaction();
        //4.执行保存操作
        Person person = new Person("张三", 20);
        session.save(person);
        //5.提交事务
        transaction.commit();
        //6.关闭Session,关闭SessionFactory
        session.close();
        sessionFactory.close();
    }

}


版权声明:本文为qq_29746255原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。