hibernate核心配置文件
一般会在src下创建hibernate.cfg.xml配置文件
<?xml version='1.0' encoding='utf-8'?>
<!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="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test?serverTimezone=UTC</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 可选配置-->
<!-- 连接池-->
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 输出底层sql语句-->
<property name="hibernate.show_sql">true</property>
<!-- 对sql语句输出进行格式化-->
<property name="hibernate.format_sql">true</property>
<!-- 自动建表-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 自动更新表结构-->
<property name="hbm2ddl.auto">update</property>
<!-- 配置数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 映射 必要的-->
<mapping resource="com/xxx/pojo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
user实体类
package com.xxx.pojo;
public class User {
private Integer id;
private String name;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
创建实体配置文件User.hbm.xml
与实体类一一映射
<?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-mapping package="com.xxx.pojo">
<!-- 配置实体类id与表id对应-->
<class name="User" table="user_table">
<!-- name 是实体类id-->
<!-- column 生成的表id,不写则使用实体类id名称-->
<id name="id" type="java.lang.Integer">
<!-- 设置表id增长策略,native代表生成id为主键且自动增长-->
<generator class="native"/>
</id>
<!-- 其他属性和表字段对应-->
<!-- name 实体类名称-->
<!-- column 表字段名称 不写则与name值相同-->
<property name="name"/>
<property name="sex"/>
</class>
</hibernate-mapping>
UserManager
进行crud操作
package com.xxx.manager;
import com.csx.hibernate.HibernateUtil;
import com.csx.pojo.User;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import java.util.Iterator;
import java.util.List;
public class UserManager {
public static void main(String[] args) throws Exception {
UserManager um = new UserManager();
um.addUsers();
// um.deleteAllUser();
// um.updateAllUser();
// um.findAllUser();
// um.delete("delete User where id = 103");
}
private void addUsers() throws Exception {
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
for (int i = 0; i < 100; i++) {
User u = new User();
u.setName("W" + i);
u.setSex("man");
sess.save(u);
if (i % 20 == 0) {
sess.flush();
sess.clear();
}
}
tx.commit();
HibernateUtil.closeSession();
}
private void deleteAllUser() throws Exception {
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
//删除符合条件的用户
String deleteHql = "delete User";
int deletedEntities = sess.createQuery(deleteHql).executeUpdate();
tx.commit();
HibernateUtil.closeSession();
}
private void updateAllUser() throws Exception {
Session sess = HibernateUtil.currentSession();
;
Transaction tx = sess.beginTransaction();
ScrollableResults users = sess.createQuery("from User")
.setCacheMode(CacheMode.IGNORE)
.scroll(ScrollMode.FORWARD_ONLY);
int count = 0;
while (users.next()) {
User u = (User) users.get(0);
u.setName("韦wade" + count);
if (++count % 20 == 0) {
sess.flush();
sess.clear();
}
}
tx.commit();
HibernateUtil.closeSession();
}
private void findAllUser() {
Configuration conf = new Configuration().configure();
SessionFactory sessionFactory = conf.buildSessionFactory();
Session sess = sessionFactory.openSession();
Transaction tx = sess.beginTransaction();
List list = sess.createQuery("from User").list();
System.out.println(list.size());
for (Iterator pit = list.iterator(); pit.hasNext(); ) {
User user = (User) pit.next();
System.out.println(user.getName());
}
tx.commit();
HibernateUtil.closeSession();
}
private void delete(String deleteHql) throws Exception {
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
int deletedEntities = sess.createQuery(deleteHql).executeUpdate();
tx.commit();
HibernateUtil.closeSession();
}
public void deleteById(int id){
Session session= HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Teacher teacher = (Teacher)session.load(Teacher.class,id);
session.delete(teacher);
tx.commit();
HibernateUtil.closeSession();
}
}