(可随意切换数据库)
ORM框架/持久层框架 jdbc的一个框架
object reference mapping 对象映射关系
通过管理对象来改变数据库中的数据
通过管理对象来操作数据库
优势:跨数据库的无缝移植(无需写数据库,底层生成)
二、hibernate使用1.新建一个maven项目
2.导入hibernate依赖
4.0.0 zw.com zw_hibernatewar 0.0.1-SNAPSHOT zw_hibernate Maven Webapp http://maven.apache.org UTF-8 1.8 1.8 4.12 4.0.0 5.3.0.Final 8.0.19 junit junit${junit.version} test javax.servlet javax.servlet-api${servlet.version} provided org.hibernate hibernate-core${hibernate.version} mysql mysql-connector-java${mysql.driver.version} zw_hibernate org.apache.maven.plugins maven-compiler-plugin3.7.0 1.8 1.8 UTF-8
在pom.xml中导jar包依赖时,可能没下载完全,就可以按以下操作检查(可以解决90%jar包没下载完全的问题):
先清除jar包:
然年进行测试:
表示pom文件没有写错
3.找到框架的配置文件
在resource文件中新建xml文件,取名为hibernate.cfg.xml
使用外部引用的方法在hibernate.cfg.xml文件中引入dtd约束
root 123456 jdbc:mysql://127.0.0.1:3306/mybatis_ssm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=true com.mysql.cj.jdbc.Driver org.hibernate.dialect.MySQLDialect thread true true
user类:
public class User {
private int id;
private String userName;
private String userPwd;
private String realName;
private String sex;
private Date birthday;
private Timestamp createDatetime;
private String remark;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Timestamp getCreateDatetime() {
return createDatetime;
}
public void setCreateDatetime(Timestamp createDatetime) {
this.createDatetime = createDatetime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", userPwd=" + userPwd + ", realName=" + realName
+ ", sex=" + sex + ", birthday=" + birthday + ", createDatetime=" + createDatetime + ", remark="
+ remark + "]";
}
}
还需要写实体类的映射文件及测试代码
三、hibernate的使用1、对框架核心配置文件(hibernate.cfg.xml)进行建模
2、获取sessionFactory工厂
3、获取session会话
4、开启事务(查询不需要事务)
5、session操作对象
6、提交事务(查询不需要事务)
7、关闭session
查询:
public class QueryDemo {
public static void main(String[] args) {
Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
SessionFactory sessionFactory = configure.buildSessionFactory();
Session session = sessionFactory.openSession();
List list = session.createQuery("from User").list();
for(Object object:list) {
System.out.println(object);
}
session.close();
}
}
得到数据:
AddDemo:
public class AddDemo {
public static void main(String[] args) {
Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
SessionFactory sessionFactory = configure.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user=new User();
user.setBirthday(new Date(System.currentTimeMillis()));
user.setCreateDatetime(new Timestamp(System.currentTimeMillis()));
user.setId(55);
user.setRealName("小熊");
user.setRemark("武侠");
user.setSex("男");
user.setUserName("yiyi");
user.setUserPwd("123456");
session.save(user);
transaction.commit();
session.close();
}
}
修改EditDemo:
public class EditDemo {
public static void main(String[] args) {
Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
SessionFactory sessionFactory = configure.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
// 拿到数据
User user = session.get(User.class, 55);
// 修改数据
user.setRealName("toto");
System.out.println(user);
transaction.commit();
session.close();
}
}
删除DelDemo:
public class DelDemo {
public static void main(String[] args) {
Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
SessionFactory sessionFactory = configure.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
// 拿到数据
User user = session.get(User.class, 55);
// 修改数据
session.delete(user);
transaction.commit();
session.close();
}



