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

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

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

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">



com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/testmybatis01?characterEncoding=utf-8
root
zyh

org.hibernate.dialect.MySQL55Dialect

update

true
true



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

更新配置:
update
在启动时根据配置更新数据库,没有表的时候创建表,有表的时候不创建,字段有更新会增加新字段,不删除原有字段 .

第三步:创建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 + '\'' +
            '}';
}

}

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












必须注册到核心配置:

需要在POM中加入资源拷贝 加入此配置主要的功能是可以在实体目录中知道xml配置


src/main/resources


src/main/java

/.properties
/.xml


false

测试生成表:
注意导包: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();

测试方法如下:
/**

  • 这里需要注意一个问题 当我们在增删改的时候 我们必须提交事物 要不然是不起作用的
    */
    public class HbTest {
    @Test
    public void testAdd(){
    User user =new User();
    Session session = HibernateUtils.getSession();
    Transaction transaction = session.beginTransaction();
    user.setUsername("张颖豪啊");
    user.setPassword("魏雪啊");
    session.save(user);
    transaction.commit();
    session.close();
    }
    @Test
    public void testDeleteByUser(){
    User user=new User();
    user.setId(4L);
    Session session = HibernateUtils.getSession();
    Transaction transaction = session.beginTransaction();
    session.delete(user);
    transaction.commit();
    session.close();
    }

    @Test
    public void testDeleteByFindUser(){
    Session session = HibernateUtils.getSession();
    Transaction transaction = session.beginTransaction();
    User user = session.get(User.class, 5L);
    session.delete(user);
    /**
    * 必须提交事物 不然是不能起到增删改的效果
    */
    // transaction.commit();
    }
    @Test
    public void testFindUser(){

     Session session = HibernateUtils.getSession();
     User user = session.get(User.class, 6L);
     System.out.println(user);
    

    }

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

你可能感兴趣的:(Hibernate入门案例与主键策略(正向工程))