开发后端的同学,对于hibernate框架应该不陌生。很多时候项目需要操作到我们的数据库,给数据库插入数据,这时候就需要用hibernate框架了。
话不多说,直接进入主题。
<!-- hibernate映射文件 -->
<?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映射文件 -->
<hibernate-mapping package="com.hibernate.entity">
<class name="UserInfo" table="user_info" catalog="digital">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"/>
</id>
<property name="userName" type="java.lang.String">
<column name="userName" length="16" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="16" not-null="true" />
</property>
<property name="regDate" type="java.util.Date">
<column name="regDate" not-null="true" />
</property>
</class>
</hibernate-mapping>
<!-- hibernate映射配置文件 -->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- hibernate映射配置文件 -->
<hibernate-configuration>
<session-factory>
<!-- Hiberante 连接的基本信息 -->
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///digital</property>
<!-- Hiberante 方言 -->
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- 是否打印SQL -->
<property name="show_sql">true</property>
<!-- 关联 Hibernate 的映射文件 -->
<mapping resource="com/hibernate/entity/UserInfo.hbm.xml"/>
</session-factory>
</hibernate-configuration>
hibernateTest类:
package com.hibernate.test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.hibernate.entity.UserInfo;
public class hibernateTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void init() {
// 加载 hibernate.cfg.xml
final StandardServiceRegistry registry =
new StandardServiceRegistryBuilder().configure().build();
try {
// 根据 hibernate.cfg.xml 配置 ,初始化 SessionFactory
sessionFactory = new MetadataSources(registry).buildMetadata()
.buildSessionFactory();
// 创建 session
session = sessionFactory.openSession();
// 通过session开始事务
transaction = session.beginTransaction();
} catch (Exception e) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
/**
* 添加数据
*/
@Test
public void testSaveUserInfo() {
// 初始化UserInfo类
UserInfo ui = new UserInfo("hibUser1", "123456", new Date());
// 保存
session.save(ui);
}
/**
* 加载数据
* get()
* load()
*/
@Test
public void testgetUserInfo() {
// 初始化UserInfo类
UserInfo ui = session.get(UserInfo.class,1);
System.out.printf(ui.toString());
}
@Test
public void testLoadUserInfo() {
// 初始化UserInfo类
UserInfo ui = session.load(UserInfo.class,2);
System.out.printf(ui.toString());
}
/**
* 删除数据
*/
@Test
public void testDeleteUserInfo() {
UserInfo ui=(UserInfo)session.get(UserInfo.class,9);
session.delete(ui);
}
/**
* 更新数据
*/
@Test
public void testUpdateUserInfo() {
UserInfo ui=(UserInfo)session.get(UserInfo.class,10);
ui.setUserName("CWT");
//session.update(ui);
session.saveOrUpdate(ui);
}
@After
public void destroy() {
// 提交事务
transaction.commit();
// 关闭session
session.close();
// 关闭sessionFactory
sessionFactory.close();
}
}
具体java工程,可以到github上面下载压缩包:https://github.com/whitedouble/whitedouble/blob/master/hibernate-1.zip
ps:请各位大神指教。