小编use*_*237的帖子

Hibernate性能最佳实践?

我正在使用Hibernate 3编写Web应用程序.

所以,过了一会儿我发现事情很慢.所以我测试了hibernate profiler,发现hibernate会为简单的操作做出无理的多次db调用.原因是我加载一个Object(这个对象有几个"父母"),这些"父母"有其他"父母".所以基本上hibernate会加载它们,即使我只需要基本对象.好的,所以我看着懒加载.这导致我进入Lazyloading-exception,因为我有一个MVC webapp.

所以现在我有点困惑,我最好的方法是什么.基本上我只需要更新对象上的单个字段.我已经拥有了对象键.

我应该:1.进入懒惰加载.然后重写我的应用程序以获得开放会话视图?2.挖掘延迟加载.然后重写我的dao更具体.例如,编写DAO方法,这些方法将返回仅与每个用例所必需的内容相关联的对象?可能是很多额外的方法...... 3.从头开始休眠并自己做吗?4.现在不能想到其他解决方案.有什么建议?

什么是最佳做法?

java performance orm hibernate jpa

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

Maven:如何配置native2ascii-maven-plugin

我向你们解雇这个问题,因为项目页面本身并没有很多信息.基本上我设置native2ascii-maven-plugin来处理我的一些资源.它适用于处理根目录中的文件.但现在我有子目录下的文件:/template/email/并希望它们包含在处理中.你能帮帮我吗?

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>native2ascii-maven-plugin</artifactId>
        <version>1.0-alpha-1</version>
        <configuration>
            <dest>target/resources</dest>
            <src>src/main/resources</src>
        </configuration>
        <executions>
            <execution>
                <id>native2ascii-utf8</id>
                <goals>
                    <goal>native2ascii</goal>
                </goals>
                <configuration>
                    <encoding>UTF8</encoding>
                    <includes>ApplicationResources*.properties, errors.properties, /template/email/newBooking*.ftl</includes>
                </configuration>
            </execution>
        </executions>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

谢谢一堆!

java maven

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

Hibernate Criteria从日期开始提取年份

我创建了一个休眠标准,用于检查合同是否在一年内有效.合同的开始日期和结束日期作为标准日期字段.

所以习惯SQL-SERVER,我会想到这个SQL的内容:

SELECT * FROM CONTRACT WHERE YEAR(startDate) <= ? AND YEAR(endDate) >= ?
Run Code Online (Sandbox Code Playgroud)

该问号是给定年份的整数.

那么如何将其转换为休眠标准呢?

int year = 2011; //Just a testyear for example purposes.
DetachedCriteria criteria = DetachedCriteria.forClass(Contract.class)
    .add(Restrictions.le("startDate", year))
    .add(Restrictions.ge("endDate", year));
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我错过了将日期转换为一年的位置,因此可以进行比较.当然,我的代码不会按原样运行.

有关如何获得理想结果的任何建议?

java hibernate

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

用"......"替换太长的字符串

让我们说我们有一个 <div style="width:100px;">This text is too long to fit</div>

div中的文本是动态的.而且我想强制文字适应宽度而不是破坏.所以我需要一些功能来测试文本是否适合,如果不适合,那么我想显示实际适合的文本部分.并追加...到最后.

文本太长的结果应该是这样的: "This text is..."

做一些我想要的标准方法吗?通过javascript,jquery,jsp或java?

谢谢!

编辑:感谢您的快速和许多答案!我在java中通过猜测适合多少个字符来做这个.这似乎不是最佳解决方案,所以这就是我来到这里的原因.

css解决方案对我来说非常完美.它不是那么大的交易,它不适用于Firefox,因为我的客户都使用ie无论如何.:)

html javascript jquery jsp

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

Hibernate - 如何仅保留父级,保持子级不变

有人可以帮我理解如何配置hibernate来做我想做的事.

我有一个父母实体"公寓",其中"房间"列表为儿童.我有一个表格来编辑"公寓",在该表格中,我列出了所有儿童"房间"仅供参考.客房以单独的形式添加和编辑.

因为我在appartment-form中列出了房间,我将lazyloading设置为false:

    @OneToMany
@JoinColumn (name = "appartmentId")
@LazyCollection (LazyCollectionOption.FALSE)
private List<Room> room;
Run Code Online (Sandbox Code Playgroud)

但如果我编辑公寓并存储它,所有公寓房间突然消失.在数据库中,它们不会被删除,而是被解除引用(如在appartmentId = null中).

那么如何配置hibernate只能保留我的Appartment-object.而不是触摸孩子们?

这是我的保存动作:

public String save() throws Exception {
    boolean isNew = (appartment.getAppartmentId() == null);

    appartment = appartmentManager.save(appartment);

    String key = (isNew) ? "appartment.added" : "appartment.updated";
    saveMessage(getText(key));

    return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

java hibernate

8
推荐指数
1
解决办法
8622
查看次数

Hibernate 3在删除级联上

我有一个多对一的预订映射.预订必须属于一个房间.一个房间可以有几个预订.

如果房间被删除,我希望删除该房间的所有预订.我将如何使用hibernate注释来执行此操作?

@Entity
public class Booking implements Serializable{

    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private Date startDate;
    private Date endDate;
    private Date createdDate;

    @ManyToOne
    @JoinColumn (name = "roomId")
    private Room room;
...
}
Run Code Online (Sandbox Code Playgroud)

java orm annotations hibernate cascade

8
推荐指数
1
解决办法
8220
查看次数

Hibernate - 如何通过注释设置sql-type?

我有一个文件作为byte [] fileContent.我的mySql方案是由Hibernate生成的,默认情况下,hibernate将fileContent的sql-type设置为BLOB.

但BLOB对我的文件来说还不够大.我至少需要一个MEDIUMBLOM甚至一个LONGBLOB.

但是我如何对我的字段进行注释以便Hibernate将我的字段生成为LONGBLOB?我现在搜索谷歌2小时没有得到任何东西......

这不应该是一个如此简单和常见的任务,它应该在某处记录?

请帮助一个沮丧的程序员!

@WhatAnnotationCanIUseToForceHibernateToMakeThisALONGBLOB????
private byte[] fileContent;
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate blob

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

事务在junit中不起作用?

这里有很多关于事务和 JUnit 的问题。但请在丢弃之前仔细阅读本文,因为我找不到任何有相同问题的人。

我有一个商业方法,注释为@Transactional。在此方法中,如果发生某些特殊情况,我将以编程方式进行回滚。TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

现在我们不要讨论以编程方式回滚是好是坏。让我们接受它在那里,并接受它会留在那里并与它一起工作。

如果我启动我的应用程序并以老式方式测试这种业务方法,那么一切都会完美运行。当东西应该回滚时,它就会回滚,当一切正常时,一切都正常。我还做了一个测试,只是@Transactional为了看看没有任何东西被回滚,即使它应该被回滚。一切都按计划进行。

但我遇到的问题是 JUnit。目前我对此方法进行了 2 个 JUnit 测试。1 应该失败(并以编程方式触发回滚),而 1 则成功但不回滚。

我已经尝试了 Junit 类的很多不同设置。目前它看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:springTestContext.xml", "classpath:springTestContext-dao.xml"})
@TransactionConfiguration(transactionManager = "txManager")
public class MyManagerTest extends AbstractTransactionalJUnit4SpringContextTests {
    @Mock
    private ProductDao productDao;

    @InjectMocks
    MyManager myManager = new MyManagerImpl();

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testUnParsableXml() {
        String xml = "adlsfas";
        Response response = myManager.processXMLContent(xml);
        assertFalse(response.isSuccess());
        System.out.println(response.getResponse());
    }

}
@Service("myManager")
public class MyManagerImpl extends BaseManager implements MyManager { …
Run Code Online (Sandbox Code Playgroud)

junit spring transactions

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

在表单提交时,从 javascript 发送带有表单值的 mailto

我有一个表单,当提交表单(输入类型=“提交”)时,我想使用预先填充的电子邮件消息打开客户端默认邮件浏览器。

因此,当用户单击提交时,需要发生两件事。打开电子邮件并提交表格。

另外,如何使用表单中输入的值来预填充电子邮件?

我是 javascript-jquery 的新手,所以拜托,任何代码示例都会有很大帮助!

感谢您的帮助!

javascript mailto jquery

5
推荐指数
1
解决办法
7816
查看次数

Java EE - 获取上传文件的真实路径的最佳方式?

我有一个带有上传表单的Web应用程序,用户可以上传文件.

我想将文件存储在文件夹'files'中.我希望这个文件夹直接放在webapp-root下.

使用struts2,在我的uploadFileAction中,我可以轻松设置此路径 String uploadDir = ServletActionContext.getServletContext().getRealPath("/files")+ "/";

但是当我试图检索文件时,显然我尝试访​​问该文件的bean无法访问getServletContext(),因此会抛出nullpointergetRealPath

现在我想弄清楚我应该如何处理这个问题.我听说过弹簧资源是要走的路,但是我找不到任何相关的例子.

有一个简单的方法来获得我的路径?我只想将rootpath发送到我的webapp.没有更多的东西......

servlets file-upload save

5
推荐指数
1
解决办法
7588
查看次数