Tag: dao

Hibernate 5.2版 – >很多Query方法都弃用了?

我是Hibernate的新手。 我正在尝试获取所有管理员的名字和姓氏列表。 我的以下代码中有两个警告。 我已经尝试在线搜索了很多。 1)查询是原始类型。 应该参数化对generics类型Query的引用。 2)不推荐使用Query类型的方法list()。 public List loadAllAdmins() { List allAdmins = new ArrayList(); try { HibernateUtil.beginTransaction(); Query q = currentSession.createQuery(“SELECT admin.firstName, admin.lastName from AdminBean admin”); allAdmins= q.list(); HibernateUtil.commitTransaction(); } catch (HibernateException ex) { System.out.println(“List loadAllPersons: HibernateException”); } return allAdmins; } 但我在整个网络上都看到了这样的示例代码。 我该如何解决这两个问题? 更新 我只是尝试按照建议使用Criteria。 它还说,对于Criteria,list()方法是弃用的……看起来很多方法都被弃用了Query和Criteria,包括uniqueResult()和其他…任何建议我应该如何替换它们?

Hibernate开启/关闭会话,DAO的正确方法

我已经编写了这个Hibernate对象DAO,但是使用这种方法,它使用的是每次更新的方法(我不认为这是正确的)。 之所以我认为它是正确的,是因为我遇到了我的User类的问题,其中包含了延迟提取的集合。 从DAO检索每个用户时,会话将关闭。 因此我无法获得我的collections品。 有时,它也会对表进行大量不必要的更新,因为该对象已分离。 那么有没有办法修复我的DAO,比如使用getCurrentSession() ? import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.test.util.DataAccessLayerException; import org.test.util.HibernateUtil; public abstract class AbstractDao { protected Session session; protected Transaction tx; public AbstractDao() { HibernateUtil.buildIfNeeded(); } protected void saveOrUpdate(Object obj) { try { startOperation(); session.saveOrUpdate(obj); tx.commit(); } catch (HibernateException e) { handleException(e); } finally […]

Spring JDBC:如何创建表?

我使用Spring JdbcTemplate和DAO模式来访问数据库。 我没有手动创建数据库表,而是在寻找一种在DAO层生成表的方法。 我知道我可以使用JdbcTemplate来执行语句,我只是在寻找合适的位置来执行它。 有最好的做法吗?

使用JSF,JPA和DAO。 没有spring?

到目前为止,我仍然使用JSF和JPA而没有DAO。 现在我想使用DAO。 但是如何在DAO-Classes中初始化EntityManager? public class AdresseHome { @PersistenceContext private EntityManager entityManager; public void persist(Adresse transientInstance) { log.debug(“persisting Adresse instance”); try { entityManager.persist(transientInstance); log.debug(“persist successful”); } catch (RuntimeException re) { log.error(“persist failed”, re); throw re; } } } 我有没有使用Spring,还是有一个没有Spring的解决方案? 谢谢。

每个“容器”类一个DAO或每个表一个DAO?

我有一个’容器’类,其中的字段包含在几个数据库表中,我使用DAO模式来访问数据。 问题是,我应该为这个“容器”类创建一个DAO,还是每个表有一个DAO并合并它们的数据更好?

为什么即使在Spring服务类的第二种方法中传播= Propagation.REQUIRES_NEW时,事务也会回滚?

基本设置现在都很好,我开始尝试交易。 Struts + Spring + Hibernate注释事务管理器。 这是Action中的示例代码,将调用服务类: userService.addUser(); 这是服务类中的addUser()方法: @Transactional(value=”deu” ) public void addUser() { userDao.addUser(); this.addUser2(); } 首先,我在userDao中调用了addUser,它将插入一个用户。 其次,我在此服务类的另一个方法中调用了addUser2 。 @Transactional(value=”deu” , propagation=Propagation.REQUIRES_NEW ) public void addUser2() { //should be a new transaction and will not affect the previous one. //this one will fail but should not affect the previous one. userDao.addUserFail(); } 由于无效PK,这一次将失败。 […]

使用Annotations使用Spring Hibernate编写更少的DAO

我的Spring + Hibernate配置文件很小且非常紧凑。 我使用自动扫描来查找我的模型实体/ daos。 我不想在我的层次结构中为每个实体编写DAO + DAOImpl。 有些人可能有资格拥有自己的,如果他们与其他实体有复杂的关系,并且需要的不仅仅是基本的CRUDfunction。 但其余的…… 有没有办法规避事实上的标准? 比如,像通用的DAO,ex: http://www.ibm.com/developerworks/java/library/j-genericdao/index.html 然后我可以做类似的事情 GenericDao dao = appContext.getBean(“genericDao”); dao.save(car); dao.save(lease); 这有可能带注释吗? 我不想在xml中配置任何东西。 如果我不能在上面做,是否仍然可以有一个GenericDaoImpl.java类似于: @Repository(“carDao”) @Repository(“leaseDao”) class GenericDaoImpl extends CustomHibernateDaoSupport implements GenericDao { … } 接着 GenericDao dao = appContext.getBean(“carDao”); dao.save(car); dao = appContext.getBean(“leaseDao”); //carDao is garbage coll. dao.save(lease); 这有用吗?

从POJO获取带注释的hibernate tablename

我有一个声明大致如下的实体: @Entity @Table(name = “myUserTable”) public class User implements Serializable { … } 我正在制作一个通用的DAO类,并且这样做我想要检索“myUserTable”这个名字。 有什么方法可以达到这个名字吗?

如何以线程安全的方式在DAO中缓存信息

我经常需要为一些不经常变化的参考数据实现DAO。 我有时会在DAO的集合字段中缓存它 – 因此它只加载一次并在需要时显式更新。 但是,这会带来许多并发问题 – 如果另一个线程在加载或更新时尝试访问数据会怎样。 显然,这可以通过使数据的getter和setter同步来处理 – 但对于大型Web应用程序来说,这是一个相当大的开销。 我已经包含了一个琐碎的例子,说明了我作为一个稻草人所需要的东西。 请建议其他方法来实现这一点。 public class LocationDAOImpl implements LocationDAO { private List locations = null; public List getAllLocations() { if(locations == null) { loadAllLocations(); } return locations; } 有关更多信息,我正在使用Hibernate和Spring,但此要求适用于许多技术。 进一步的想法: 这根本不应该在代码中处理 – 而是让ehcache或类似处理吗? 我缺少一个共同的模式吗? 显然有很多方法可以实现,但我从未找到过简单易维护的模式。 提前致谢!

反映DAO中inheritance关系的最有效方法?

使用MVC结构和业务对象 / DAO体系结构处理业务应用程序。 对于任何普通的业务对象,CRUD函数都相当简单。 但是,处理像“客户是用户”这样的亲子关系的最佳方式是什么? 我知道涉及以下课程: User, UserDAO, Customer, CustomerDAO Customer类可以很好地从Userinheritance,但是如何在DAO CRUD函数中最好地反映这一点?