Hibernate入门案例与主键策略(正向工程)

2018-08-17  本文已影响17人  神豪VS勇士赢

开发流程(手动档)
第一步:搭建环境
数据库设计:
数据库名不要加 中划线“-”,设置自动更新时无法执行修改表字段的sql语句。

CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT,
username varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
password varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

创建Maven项目,加入Hibernate,MySQL依赖。指定JDK编译版本。

导入 Hibernate 依赖包 以及 mysql 依赖以及JDK 编译版本

第二步:创建Hibernate的核心配置文件

配置文件hibernate.cfg.xml

完整的核心配置文件如下:

<!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>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testmybatis01?characterEncoding=utf-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">zyh</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</property>

<property name="hbm2ddl.auto">update</property>

<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>

<mapping resource="com/zyh/User.hbm.xml"></mapping>

</session-factory>

</hibernate-configuration>
在这里强调一个内容:
数据库模式定义语言DDL(Data Definition Language)(CREATE、ALTER、DROP)
数据操纵语言DML(SELECT、UPDATE、INSERT、DELETE)

更新配置:
<property name="hbm2ddl.auto">update</property>
在启动时根据配置更新数据库,没有表的时候创建表,有表的时候不创建,字段有更新会增加新字段,不删除原有字段 .

第三步:创建ORM映射文件和对应的实体类

public class User {
private Long id;
private String username;
private String password;

public Long getId() {
    return id;
}

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

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public User() {
}

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", username='" + username + '\'' +
            ", password='" + password + '\'' +
            '}';
}

}

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

<class name="com.zyh.User" table="user">

<id name="id" column="id">

<generator class="identity"></generator>
</id>

<property name="username" column="username"></property>
<property name="password" column="password"></property>
</class>
</hibernate-mapping>

必须注册到核心配置:

<mapping resource="com/zyh/User.hbm.xml"></mapping>

需要在POM中加入资源拷贝 加入此配置主要的功能是可以在实体目录中知道xml配置
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>/.properties</include>
<include>
/.xml</include>
</includes>

<filtering>false</filtering>
</resource>
</resources>

测试生成表:
注意导包:org.hibernate.cfg.Configuration;

第四步:操作数据
JDBC操作数据流程:


image.png

Hibernate操作数据流程:
1,加载hibernate核心配置文件
Configuration configuration= new Configuration().configure("hibernate.cfg.xml")
2,得到操作数据库对象
SessionFactory sessionFactory = configuration.buildSessionFactory();
3,创建一个session 对象
Session session = sessionFactory.openSession();//从会话工厂获取一个session
4,开启事物(查询不需要)
Transaction transaction = session.beginTransaction();
5,执行
Userinfo user = new Userinfo(“qf”,”qf”);
session.save(user);
System.out.println(user.getId());//新生成的id
6.提交事务
transaction.commit();
7.关闭
session.close();

容器关闭:sessionFactory.close();

测试方法如下:
/**

}
Hibernate底层默认不提交事物 所以我们在怎删改的时候需要自己添加事物
JDBC底层是默认提交事物的

上一篇 下一篇

猜你喜欢

热点阅读