根据Hibernate docs for one-to-manyxml mapping标签,有一个名为as的属性not-found
http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/collections.html#collections-onetomany
医生说:
not-found(可选 - 默认为exception):指定如何处理引用缺失行的缓存标识符.ignore会将缺少的行视为空关联.
这个属性有什么用?我试图在Product和Parts之间创建一个映射,Product有一组零件,下面有映射细节:
<set name="parts" cascade="all">
<key column="productSerialNumber" not-null="true" />
<one-to-many class="Part" not-found="ignore"/>
</set>
Run Code Online (Sandbox Code Playgroud)
然后我写了我的Java代码:
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Product prod = (Product) session.get(Product.class, 1);
session.getTransaction().commit();
System.out.println(prod);
HibernateUtil.getSessionFactory().close();
}
Run Code Online (Sandbox Code Playgroud)
我期待我的设置为null,其中包含我在映射文件中配置的部件not-found="ignore".但我得到了常规例外 - org.hibernate.LazyInitializationException
请帮我理解这个属性的用途是什么?什么是缓存标识符?
我在目录中有一些XML文件,我试图用下面的脚本<value>hello</hello>用文本替换文本<value>helloWorld</value>:
#!/bin/bash
VAR1=hello
VAR2=helloWorld
find ./myFolder/ -type f -exec sed -i 's/<value>$VAR1<\/value>/<value>$VAR2<\/value>/g' '{}' \;
Run Code Online (Sandbox Code Playgroud)
如果我直接放置值而不是使用变量VAR1和VAR2,那么命令工作正常并正确替换文本.
但是,当我使用上面脚本中显示的变量时,替换不会发生.请让我知道我在哪里做错了?
该休眠文件说,persist()相比是非常有用的save()长时间运行的交谈Session/Persistence context
坚持()
这在具有扩展会话/持久性上下文的长时间运行的对话中很有用。
节省()
这在具有扩展会话/持久性上下文的长时间运行的对话中是有问题的。
1)它说的是什么意思Persistence context?
2)你能举例说明什么long-running conversations吗?这适用于 Web 应用程序吗?
谢谢!
更新:
这篇文章让我清楚地了解了我的第一个查询 -Persistence context如:
在运行时,无论何时打开和关闭会话,在这些打开和关闭边界之间,Hibernate 都会在持久性上下文中维护对象。把它想象成一个休眠控制的第一级运行时缓存。Hibernate 为持久上下文中管理的实体执行自动脏检查和事务后写。Hibernate 保证此缓存中的 Java 对象标识范围。缓存中只存在一个代表特定数据库行的对象实例。
我正在浏览Strings的Java牧场网站,并在垃圾收集部分的声明中说:
与大多数对象不同,String文字总是从String Literal Pool中引用它们.这意味着他们总是引用它们,因此不符合垃圾收集的条件.
如果我有一个带有Java bean类的Web应用程序,例如:employee as
public class Employee {
int employeId;
String firstName;
String lastName;
String fullName = firstName + lastName; // or firstName.concat(lastName);
.... Setters & Getters....
}
Run Code Online (Sandbox Code Playgroud)
如果应用程序创建了这么多员工,那么每次都会根据请求参数填充此bean.此外,如果应用程序提供搜索功能,用户可以根据名字和姓氏查找员工,那么我们需要填充此bean并将其传递到请求范围,以便用户可以看到结果.
在这种情况下,应用程序为firstName,lastName和fullName创建了很多字符串.根据Java牧场网站的解释,我们会OutOfMemory在一段时间后得到错误吗?还假设如果我只有firstName和lastNname又是字符串,即使我们没有fullName,我们也面临同样的问题?
我正在浏览SQL*Plus脚本,并遇到了一些行以下的行:
@test_data/EMPLOYEE.dat
@test_data/ADDRESS.dat
Run Code Online (Sandbox Code Playgroud)
该.dat内部有他们一些SQL代码.我试图在互联网上搜索@符号表示的内容,但我没有得到任何结果.我是SQL*Plus的新手,请告诉我这个符号表示的内容.