欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hibernate快速入门

程序员文章站 2022-06-09 14:53:28
...

下载hibernate
Hibernate快速入门
Hibernate快速入门

documentation目录:存放hibernate的相关文件与API
lib目录:存放hibernate编译和运行所依赖的jar包,其中required子目录下包含了运行hibernate项目必须的jar包
project目录:存放hibernate各种相关的源代码与资源.
在lib/required目录中,包含的jar包

Hibernate快速入门
创建数据库与表

CREATE DATABASE hibernateTest;

USER hibernateTest;

CREATE TABLE t_customer(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    address VARCHAR(50)
)

创建实体类

public class Customer {

    private int id;
    private String name;
    private String address;
    private String sex;

    public Customer() {
        super();
    }

    public Customer(String name, String address) {
        super();
        this.name = name;
        this.address = address;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    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 String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Customer [id=" + id + ", name=" + name + ", address=" + address + "]";
    }

}

导入hibernate框架相关依赖jar包

导入lib/required下所有的jar

Hibernate快速入门

导入数据库的驱动jar包

Hibernate快速入门

日志相关jar包

Hibernate快速入门

将hibernate/project/etc/log4j.properties文件导入到工程src下.

#
# Hibernate, Relational Persistence for Idiomatic Java
#
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
#

### direct log messages to stdout ###
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{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

Hibernate的相关配置文件

有两种:
1.xxx.hbm.xml 它主要是用于描述类与数据库中的表的映射关系.
2.hibernate.cfg.xml 它是hibernate框架核心配置文件。

映射配置文件

位置:它要与实体类在同一个包下.
名称 :类名.hbm.xml
约束:

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

约束文件可以在hibernate的核心的jar包下的org.hibernate包下查找到

Hibernate快速入门
Hibernate快速入门

Customer.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="cn.nwtxxb.domain">
    <!-- name属性它是实体类的全名 table 表的名称 catalog 数据库名称 -->
    <class name="Customer" table="t_customer"
        catalog="hibernateTest">
        <!-- id它是用于描述主键 -->
        <id name="id" column="id" type="int">  <!-- java数据类型 -->
            <!-- 主键生成策略 -->
            <generator class="native"></generator>
        </id>

        <!-- 使用property来描述属性与字段的对应关系 -->
        <property name="name" column="name" length="20" type="string"></property>  <!-- hibernate数据类型 -->
        <property name="address">
            <column name="address" length="50" sql-type="varchar(50)"></column> <!-- sql数据类型 -->
        </property>
        <property name="sex" column="sex" length="20"></property>
    </class>
</hibernate-mapping> 

核心配置文件

它主要是hibernate框架所使用的,它主要包含了连接数据库相关信息,hibernate相关配置等。
位置:在src下创建一个hibernate.cfg.xml
约束:

Hibernate快速入门

约束文件所在位置:hiberante核心jar包下的org.hibernate包下

Hibernate快速入门
Hibernate快速入门

在这个文件中如何配置?
可以参考 hibernate-release-5.0.7.Final\project\etc\hibernate.properties文件

<?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>
        <!-- 配置关于数据库连接的四个项 driverClass url username password -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///hibernateTest</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">abc</property>

        <!-- 设置连接提供者 -->
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <!-- c3p0连接池的配置 -->
        <property name="hibernate.c3p0.max_size">20</property> <!-- 最大连接池 -->
        <property name="hibernate.c3p0.min_size">5</property> <!-- 最小连接数 -->
        <property name="hibernate.c3p0.timeout">120</property> <!-- 超时 -->
        <property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 空闲连接 -->

        <!-- 可以将向数据库发送的sql显示出来 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 格式化sql -->
        <property name="hibernate.format_sql">true</property>

        <!-- hibernate的方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- 自动创建表 -->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- 用于设置事务提交方式 -->
        <property name="hibernate.connection.autocommit">false</property>

        <!-- 配置hibernate的映射文件所在位置 -->
        <mapping resource="cn/nwtxxb/domain/Customer.hbm.xml" />
    </session-factory>

</hibernate-configuration>  

测试

public class HibernateTest1 {

    // 保存一个Customer
    @Test
    public void saveCustomerTest() {
        // 创建一个Customer
        Customer c = new Customer();
        c.setName("张三");
        c.setAddress("北京");
        c.setSex("男");

        // 使用hibernate的api来完成将customer信息保存到mysql中操作
        Configuration config = new Configuration().configure(); // 加载hibernate.cfg.xml

        SessionFactory sessionFactory = config.buildSessionFactory();

        Session session = sessionFactory.openSession(); // 相当于得到一个Connection。
        // 开启事务
        Transaction transaction = session.beginTransaction();
        // 操作
        session.save(c);

        // 事务提交
        transaction.commit();
        session.close();
        sessionFactory.close();
    }
}
相关标签: hibernate入门案例