第一次使用Hibernate基本的增删改查 -----(笔记)
承接上一个博客:Hibernate的配置和使用
创建一个util工具类
public class HibernateUtil {
public static final SessionFactory sessionFactory;
static {
try {
Configuration configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
} catch (Throwable ex) {
System.err.println("初始化sessionFactory失败。"+ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
public static Session currentSession() throws HibernateException {
Session s = session.get();
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = session.get();
if (s != null) {
s.close();
}
session.set(null);
}
}
测试类:
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 from User where id = 102");
// um.find("select name from User where id < 110");
// um.update("update User set name = 'wlwlwl' where id = 103 ");
User user = new User();
user.setName("wlzs");
user.setSex("wzbl");
um.add(user);
}
//自定义添加(可以修改参数为list换成批量添加)
public void add(User user) throws Exception {
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
sess.save(user);
tx.commit();
HibernateUtil.closeSession();
}
//自定义更新
public void update(String updateSql) throws Exception {
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
Query queryupdate=sess.createQuery(updateSql);
int ret=queryupdate.executeUpdate();
tx.commit();
HibernateUtil.closeSession();
}
//批量添加
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("wlzs"+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();
}
//自定义查找
private void find(String selectHql) throws Exception {
Configuration conf = new Configuration().configure();
SessionFactory sessionFactory = conf.buildSessionFactory();
Session sess = sessionFactory.openSession();
Transaction tx = sess.beginTransaction();
List<String> list = sess.createQuery(selectHql).list();
for (String str : list) {
System.out.println(str);
}
HibernateUtil.closeSession();
}
}