相关疑难解决方法(0)

Hibernate中的第一级和第二级缓存是什么?

任何人都可以用简单的话来解释Hibernate中的第一级和第二级缓存是什么?

nhibernate hibernate

235
推荐指数
4
解决办法
18万
查看次数

org.hibernate.LazyInitializationException - 无法初始化代理 - 没有会话

我得到以下异常:

Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
    at sei.persistence.wf.entities.Element_$$_jvstc68_47.getNote(Element_$$_jvstc68_47.java)
    at JSON_to_XML.createBpmnRepresantation(JSON_to_XML.java:139)
    at JSON_to_XML.main(JSON_to_XML.java:84)
Run Code Online (Sandbox Code Playgroud)

当我尝试从main调用以下行时:

Model subProcessModel = getModelByModelGroup(1112);
System.out.println(subProcessModel.getElement().getNote());
Run Code Online (Sandbox Code Playgroud)

getModelByModelGroup(int modelgroupid)首先实现了这个方法,如下所示:

public static Model getModelByModelGroup(int modelGroupId, boolean openTransaction) {

    Session session = SessionFactoryHelper.getSessionFactory().getCurrentSession();     
    Transaction tx = null;

    if (openTransaction) {
        tx = session.getTransaction();
    }

    String responseMessage = "";

    try {
        if (openTransaction) {
            tx.begin();
        }
        Query query = session.createQuery("from Model where modelGroup.id = :modelGroupId");
        query.setParameter("modelGroupId", modelGroupId); …
Run Code Online (Sandbox Code Playgroud)

java orm session hibernate lazy-loading

159
推荐指数
10
解决办法
40万
查看次数

使用hibernate.enable_lazy_load_no_trans解决Hibernate Lazy-Init问题

我一直患有臭名昭着的hibernate异常

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Run Code Online (Sandbox Code Playgroud)

现在社区正在欢呼

<property name="hibernate.enable_lazy_load_no_trans" value="true"/>

说它解决了问题,但小心使用它.

他们的意思是谨慎使用它?这个属性实际上做了什么?

请给我任何见解.提前致谢.

java persistence hibernate jpa lazy-initialization

53
推荐指数
3
解决办法
5万
查看次数

ibatis和mybatis之间的区别

iBatis和myBatis有什么区别?我在哪里可以找到一个完美的例子?请建议.我通过谷歌找不到这个问题的链接.

ibatis mybatis

31
推荐指数
2
解决办法
3万
查看次数

MyBatis可以创建数据库模式吗?

MyBatis有任何功能允许从像Hibernate那样的de Class Model创建SQL模式吗?

我在谷歌寻找,我只找到有关MyBatis Generator的信息(http://mybatis.github.io/generator/).这个工具似乎对从SQL Schema生成Java模型很有用,这与我想要的相反.

java hibernate ibatis mybatis

7
推荐指数
1
解决办法
4484
查看次数

ORM 和对象映射的区别?

在 Spring Boot 教程站点上,我阅读了以下内容:

Spring Framework 的优点在于它不会尝试解决已经解决的问题。它所做的只是提供与提供出色解决方案的框架的良好集成。

  • ORM的休眠
  • 用于对象映射的 iBatis

这就是 Hibernate 解释其目的的方式:

Hibernate ORM 使开发人员能够更轻松地编写数据超过应用程序进程的应用程序。作为对象/关系映射 (ORM) 框架,Hibernate 关注数据持久性,因为它适用于关系数据库(通过 JDBC)。

除了 iBatis 更名为 MyBatis 之外,MyBatis 提供的解决方案似乎与 ORM 方法不同。在他们的介绍页面上,MyBatis 的创建者写道:

MyBatis 是一流的持久化框架,支持自定义 SQL、存储过程和高级映射。MyBatis 消除了几乎所有的 JDBC 代码和手动设置参数和检索结果。MyBatis 可以使用简单的 XML 或注解进行配置,并将原语、Map 接口和 Java POJO(Plain Old Java Objects)映射到数据库记录。

所以我的猜测是Object Mapping一定更接近于数据库、SQL、存储过程等。不知道能不能应用于NoSQL数据库。而 ORM 只涉及关系数据库。

ORM从真正不同的对象映射或者他们同义词?有什么不同?

java orm hibernate mybatis

6
推荐指数
1
解决办法
4328
查看次数

如何通过iBatis防止UPDATE中的并发问题

我们的Java EE Web应用程序使用iBatis(ORM)执行数据库操作.数据库操作流程如下

流程:JSP ---> Action ---> ServiceIMpl ---> DaoImpl ---->通过'IBatis调用更新查询

注意:Action,Service和DAO类使用Spring 2.5的依赖注入技术进行实例化.我们使用Struts2.

问题:2个并发用户搜索相同的记录,User1更新Attribute1,而User2更新Attribute2.User1首先点击"保存",然后User2点击保存(它们相互跟随,差几秒).当我们在数据库中看到数据时,只存在User1的更新.审核列还仅显示User1的更新.User2对Attribute2的更新未完成,同时不会抛出异常.

我们尝试在iBatis中使用begin transaction和commit transaction来围绕sqlmap xml中定义的更新查询的调用.同样的问题仍然存在.我们还尝试删除这些事务命令,但问题仍然存在.

我们应该在更新期间做任何特殊/不同的事情来处理并发吗?像iBatis这样的ORM不会自己处理吗?

附加信息:进一步调查显示以下信息.

当User1和User2单击某条记录时,将获取完整的数据以供查看.

现在,当User1和User2都更改了少量属性并单击save(并发)时,首先更新User1的数据,然后在更新User2的数据时,User1的已更新数据被覆盖并丢失.

What approach is usually followed in such screens to handle such scenarios ?

concurrency spring ibatis struts2

2
推荐指数
1
解决办法
1万
查看次数