不推荐使用的休眠 getSession().connection() 的替代方案
Posted
技术标签:
【中文标题】不推荐使用的休眠 getSession().connection() 的替代方案【英文标题】:Alternative of deprecated hibernate getSession().connection() 【发布时间】:2013-03-05 07:21:19 【问题描述】:在使用 HibernateDaoSupport 类时,我发现 getSession().connection();已弃用。
请问还有什么方法可以代替这个
【问题讨论】:
这个问题在这里得到了相当彻底的讨论。 ***.com/questions/8770459/… 【参考方案1】:现在我们必须使用session.doWork() API:
session.doWork(
new Work()
public void execute(Connection connection) throws SQLException
doSomething(connection);
);
另请参阅:session.connection() deprecated on Hibernate?
【讨论】:
您帖子的最后一行足以添加为问题的评论,而不是发布新答案。除了 API 链接之外没有什么新东西。 @NayanWadekar 感谢您的关注。如果您看到该链接,则有 4 到 5 种获取连接对象的方法。但是我上面写的那个看起来更好(根据我在阅读所有可能性后的理解)。 我认为,一个小的绿色勾号和投票数足以将可能性降到最低。【参考方案2】:我找到了以下解决方法,无需任何弃用即可获得 Session 的连接。我很确定 Hibernate 的人不会允许这样做。
private static class WorkAround implements org.hibernate.jdbc.Work
private Connection conn = null;
@Override
public void execute(Connection conn) throws SQLException
this.conn = conn;
public Connection getConnection()
return conn;
public static Connection getConnection(Session session)
WorkAround wrk = new WorkAround();
session.doWork(wrk);
return wrk.getConnection();
我想在此处发布此答案:session.connection() deprecated on Hibernate?,但我知道我不允许这样做。
【讨论】:
【参考方案3】:你可以使用 org.hibernate.internal.SessionImpl;
import org.hibernate.internal.SessionImpl;
public static class WorkAround
public Connection getConnection(Session session)
SessionImpl sessionImpl = (SessionImpl) session;
return session.connection()
【讨论】:
以上是关于不推荐使用的休眠 getSession().connection() 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章