知识点
相关文章
更多最近更新
更多hibernate实现简单的CRUD
2019-03-28 10:43|来源: 领悟书生
抽取出hibernate的工具类:
package org.zttc.itat.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class HibernateUtil { private final static SessionFactory FACTORY = buildSessionFactory(); private static SessionFactory buildSessionFactory() { Configuration cfg = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory factory = cfg.buildSessionFactory(serviceRegistry); return factory; } public static SessionFactory getSessionFactory() { return FACTORY; } public static Session openSession() { return FACTORY.openSession(); } public static void close(Session session) { if(session!=null) session.close(); } }
具体的增删改查:
package org.zttc.itat.test; import java.text.SimpleDateFormat; import java.util.List; import org.hibernate.Session; import org.junit.Test; import org.zttc.itat.model.User; import org.zttc.itat.util.HibernateUtil; @SuppressWarnings("unchecked") public class TestCRUD { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @Test public void testAdd() { Session session = null; try { session = HibernateUtil.openSession(); session.beginTransaction(); User u = new User(); u.setBorn(sdf.parse("1977-11-22")); u.setNickname("张老七"); u.setPassword("123"); u.setUsername("zhanglaowu"); session.save(u); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); if(session!=null) session.getTransaction().rollback(); } finally { HibernateUtil.close(session); } } @Test public void testLoad() { Session session = null; try { session = HibernateUtil.openSession(); User u = (User)session.load(User.class,2); System.out.println(u); } catch (Exception e) { e.printStackTrace(); } finally { HibernateUtil.close(session); } } @Test public void testUpdate() { Session session = null; try { session = HibernateUtil.openSession(); session.beginTransaction(); User u = (User)session.load(User.class, 2); u.setNickname("张小四"); session.update(u); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); if(session!=null) session.getTransaction().rollback(); } finally { HibernateUtil.close(session); } } @Test public void testDelete() { Session session = null; try { session = HibernateUtil.openSession(); session.beginTransaction(); User u = new User(); u.setId(2); session.delete(u); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); if(session!=null) session.getTransaction().rollback(); } finally { HibernateUtil.close(session); } } @Test public void testList() { Session session = null; try { session = HibernateUtil.openSession(); List<User> users = session.createQuery("from User").list(); for(User u:users) { System.out.println(u); } } catch (Exception e) { e.printStackTrace(); } finally { HibernateUtil.close(session); } } @Test public void testPager() { Session session = null; try { session = HibernateUtil.openSession(); List<User> users = session.createQuery("from User") .setFirstResult(0) .setMaxResults(2).list(); for(User u:users) { System.out.println(u); } } catch (Exception e) { e.printStackTrace(); } finally { HibernateUtil.close(session); } } }
本文链接:hibernate实现简单的CRUD,由领悟书生原创(笔记),转载请注明出处http://www.656463.com/article/393
相关问答
更多-
最新开通快手实验室教程 直播权限?[2022-02-22]
简单 -
休眠:CRUD通用DAO(Hibernate: CRUD Generic DAO)[2022-07-11]
这是我的 @Component public class Dao{ @Resource(name = "sessionFactory") private SessionFactory sessionFactory; publicT save(final T o){ return (T) sessionFactory.getCurrentSession().save(o); } public void delete(final Object ... -
Grails是一个非常好的基于Spring MVC的类Rails框架。 对于持久性,他们使用GORM ,它基本上是一个构建在Hibernate之上的类似ActiveRecord的框架。 很漂亮。 如果您已经拥有Hibernate实体,那么实际上可以在Grails中立即使用它们,而无需额外的工作。 Grails is a very nice Rails-like framework built on top of Spring MVC. For persistence, they use GORM, whic ...
-
单个DAO和通用CRUD方法(JPA / Hibernate + Spring)(Single DAO & generic CRUD methods (JPA/Hibernate + Spring))[2023-04-22]
以下是一个示例界面: public interface GenericDao{ T create(T t); T read(PK id); T update(T t); void delete(T t); } 并实施: public class GenericDaoJpaImpl implements GenericDao { ... -
HandledRetryableTxnError指示事务应该重试 。 在事务之间检测到冲突时,这发生在SERIALIZABLE隔离级别。 蟑螂自动执行一些重试,但不是全部,需要客户参与。 您可以在docs站点上找到多种语言的客户端重试示例,包括java 。 The HandledRetryableTxnError indicates that the transaction should be retried. This occurs at SERIALIZABLE isolation levels whe ...
-
它可以通过hibernate ClassMetadata实现。 Session session = (Session) entityManager.getDelegate(); SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory(); ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(p ...
-
你的所有问题的答案都是肯定的。 具体来说,对于问题1,2和4,请看一下Hibernate级联: 关于级联的Hibernate文档 关于级联的Mkyong文章 对于问题3,Hibernate会在您请求后自动获取其他实体(通过调用其get方法)。 The answer is yes to all of your questions. Specifically, for questions 1, 2, and 4 take a look at Hibernate cascading: Hibernate Docu ...
-
Hibernate CRUD与列表(Hibernate CRUD with lists)[2023-04-18]
这实际上取决于Entity3维护的列表是否设置为级联操作,例如PERSIST , MERGE和DELETE 。 如果列表配置为级联,那么您所需要做的就是: 设置Entity4的父Entity4 。 将Entity4添加到其父级列表并合并修改后的父级。 如果未配置级联,则需要执行以下操作: 设置Entity4的父Entity4 。 保留新创建的实例Entity4 。 将Entity4添加到其父级列表并合并修改后的父级。 现在您可能会问为什么Entity4的父实体必须更新其列表并随后在任何一种情况下合并? 这是 ... -
字符串应该在''之间,因此您的查询应如下所示: Query query=session.createQuery("from vi where name='" + name + "'); 但要避免任何语法错误或SQL注入,您必须使用: Query query = session.createQuery("from vi where name=:name"); query.setParameter("name", name); 编辑 为什么你根本不使用: //no need to select your o ...
-
对的,这是可能的。 检查这个问题: 使用Jersey的REST with Java(JAX-RS) 。 一般来说,有很多解决方案,你必须搜索一些。 我认为开始最有效的是这个: http://www.vogella.com/tutorials/REST/article.html 在这个例子中,你有很多信息可以创建包括CRUD和Jersey在内的一切。 之后你可以检查一下: http://persistentdesigns.com/wp/jersey-spring-and-jpa/ 在春天有解释泽西和JPA的整 ...