hibernate初体验

基本步骤:

  1. 数据库创建表(可选)
CREATE TABLE IF NOT EXISTS tb_employee (
	id int UNSIGNED auto_increment,
	firstName VARCHAR(32) NOT NULL DEFAULT'',
	lastName VARCHAR(32) NOT NULL DEFAULT'',
	PRIMARY KEY(id)
)ENGINE=InnoDb DEFAULT CHARSET=utf8;
  1. 创建一个普通java项目
  2. 创建一个lib目录,导入jar包(要确保添加到build path中
    在这里插入图片描述
  3. 创建一个简单类Employee
public class Employee {

    private int id;
    private String firstName,lastName;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}
  1. 创建映射文件employee.hbm.xml,用于Java类和数据库表进行映射
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <!--持久化类的映射文件-->
    <!--  指定类名和表名  -->
    <class name="com.hxm.domain.Employee" table="tb_employee">
        <id name="id">
            <!--id生成策略-->
            <generator class="native"></generator>
        </id>
        <property name="firstName" column="firstName"></property>
        <property name="lastName"></property>
    </class>
</hibernate-mapping>
  1. 创建hibernate配置文件hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC</property>
    <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123456</property>
    <!-- DB schema will be updated if needed -->
    <!--  根据需要创建数据库表  -->
    <property name="hbm2ddl.auto">update</property>
    <!--  指定数据库方言  -->
    <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <!-- 配置连接池 -->
    <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<!--    <property name="c3p0.acquire_increment">1</property>-->
<!--    <property name="c3p0.idle_test_period">300</property>-->
<!--    <property name="c3p0.max_size">20</property>-->
<!--    <property name="c3p0.max_statements">100</property>-->
<!--    <property name="c3p0.min_size">5</property>-->
<!--    <property name="c3p0.timeout">90</property>-->
<!--    <property name="c3p0.preferredTestQuery ">select 1 from user where id=1</property>-->
<!--    <property name="c3p0.idleConnectionTestPeriod ">18000</property>-->
<!--    <property name="c3p0.maxIdleTime">25000</property>-->
<!--    <property name="c3p0.testConnectionOnCheckout">true</property>-->
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>

    <!--  映射文件  -->
    <mapping resource="employee.hbm.xml"/>
</session-factory>

  1. 编写代码测试

public class Main {
    public static void main(final String[] args) throws Exception {
        // 1.根据配置文件创建配置类
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");

        // 2.通过配置类构建会话工厂
        SessionFactory factory = configuration.buildSessionFactory();

        // 3.通过会话工厂产生会话
        Session session = factory.openSession();

        // 4.通过会话开启事务
        Transaction transaction = session.beginTransaction();

        // 5.创建对象
        Employee employee = new Employee();
        employee.setId(101);
        employee.setFirstName("Max");
        employee.setLastName("Su");

        // 6.通过会话保存对象到数据库
        session.persist(employee);

        // 7.提交事务
        transaction.commit();

        // 8.关闭会话
        session.close();

        System.out.println("successfully saved");
    }
}
  1. 测试结果
    在这里插入图片描述
存在的问题
  1. 数据库连接url中少写了冒号。。。。。。
  2. 数据库连接url后未加参数,会提示时间错误的异常。。。
  3. 数据库连接url后多参数连接符不能使用&要使用
&amp;
  1. 数据库建表语句,表名和字段名加了引号报错,要清楚所用数据库对应版本的常用语法。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bright1st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值