是否可以使用Hibernate并使用只读连接连接到数据库?我将研究一个项目,该项目需要连接到现有数据库,从中提取数据,并在应用程序中执行一些复杂的数据操作。在所有这些中,我无法更改数据库中的任何内容,因此只读连接要求。
我的第一个想法是使用Hibernate从数据库中提取数据,以便我可以用现成的Java对象来表示数据,但是,我似乎无法找到有关如何强制Hibernate使用只读的任何信息数据库连接...我觉得这可能实际上是不可能的,但我想在寻求其他想法之前先从别人那里找到答案。
答案 0 :(得分:3)
我没有足够的声誉来评论,显然:(
但是回应你关于Hibernate仍然可以写回数据库的情况的评论,你可以手动将对象从持久化上下文中分离出来,之后Hibernate会停止关注对象的状态&是否经过修改。
答案 1 :(得分:2)
您可以使用:Session.setDefaultReadOnly(true);
http://docs.jboss.org/hibernate/orm/3.5/reference/en-US/html/readonly.html#readonly-api-loaddefault
答案 2 :(得分:0)
要对在应用程序中执行的任何操作均采取防弹措施,您需要为Hibernate配置为使用的DB用户分配只读权限。这必须在数据库端完成。否则,如果仅依赖应用程序端的配置,则总是会犯一个错误(忘记分离实体,忘记将会话设置为只读模式,等等)。