-
2004-10-20
hibernate tips
1.hbm.xml的主键生成策略用oracle的sequence生成主键的配置方法:<generator class="sequence">
<param name="sequence">COMPLAINHANDLENODE_SEQ</param>
</generator>auto-import=true时,可以不写全包名.2.关系many-to-oneone-to-onemany-to-many3.subclass多态持久化需要为父类的每个子类都进行声明4.集合lazy initialization集合(不包括数组)是可以延迟初始化的,意思是仅仅当应用程序需要访问时,才载入他们的值。s = sessions.openSession();
User u = (User) s.find("from User u where u.name=?", userName,
Hibernate.STRING).get(0);
Map permissions = u.getPermissions();
s.connection().commit();
s.close();
Integer accessLevel = (Integer) permissions.get("accounts"); //Error!因为在commit之前,permissions没有被用到,permission没有被初始化,而session被close了,导致permissions永远都无法load data.解决办法:吧最后一行一道session被提交之前.设置:<set name="names" table="NAMES" lazy="true" order-by="name asc"><key column="group_id"/>
<element column="NAME" type="string"/>
</set>5.排序<!--排序,jdk1.4or higher版本支持,否则只能用 sort="xxx.MyComparator"(实现java.util.Comparator)来进行排序-->或者关联还可以在运行时使用filter()根据任意的条件来排序。6.session.load(),session.get(),session.iterate和session,querysession.load()------------------------------在取不到对应数据的时候会抛出无法恢复的exceptionsession.get()-------------------------------在取不到对应数据时,会返回空get只能通过id查询,可以使用for update形式查询:Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);session.iterate()---------------------------对于查询返回大量结果并且只想利用部分的时候,会有明显效果.session.query()---------------------------example:Query q = sess.createQuery("from DomesticCat cat");
q.setFirstResult(20);
q.setMaxResults(10);
List cats = q.list();你甚至可以在映射文档中定义命名查询。<query name="eg.DomesticCat.by.name.and.minimum.weight"><![CDATA[
from eg.DomesticCat as cat
where cat.name = ?
and cat.weight > ?
] ]></query>Query q =
sess.getNamedQuery("eg.DomesticCat.by.name.and.minimum.weight");命名参数用:name 的形式在查询字符串中表示。在Query 中有方
法把实际参数绑定到命名参数或者JDBC 风格的?参数。和JDBC 不同,Hibernate 的参数从0
开始计数。7:分页显示代码Query q = sess.createQuery("select cat.name, cat from DomesticCat cat
" +
"order by cat.name");
ScrollableResults cats = q.scroll();
if ( cats.first() ) {
// find the first name on each page of an alphabetical list of
cats by name
firstNamesOfPages = new ArrayList();
do {
String name = cats.getString(0);
firstNamesOfPages.add(name);
}
while ( cats.scroll(PAGE_SIZE) );
// Now get the first page of cats
pageOfCats = new ArrayList();
cats.beforeFirst();
int i=0;
while( ( PAGE_SIZE > i++ ) && cats.next() )
pageOfCats.add( cats.get(1) );
}8.filter集合filter是一种特殊的查询,用于一个持久化集合或者数组。查询字符串可以引用this,意
为当前的数组元素。Collection blackKittens = session.filter(
pk.getKittens(), "where this.color = ?", Color.BLACK,
Hibernate.enum(Color.class)
);请注意filter 并不需要from 子句(当然需要的话它们也可以加上)。Filter 不限定返回它
们自己的集合元素。9.使用本地SQL 的查询你可以使用createSQLQuery()方法,用SQL 来表达查询。你必须把SQL 别名用大括号包围起
来。10.持久化 -
2004-10-20
使用spring得理由
Spring要提供的是一种管理你的业务对象的方法。Spring是使用测试驱动开发的工程的理想框架。Spring既是全面的又是模块化的。而它的架构又是内部一致。1。Spring能有效地组织你的中间层对象。2。Spring能消除在许多工程中常见的对Singleton的过多使用。3。Spring能消除各种各样自定义格式的属性文件的需要。3。你仅仅需要看看类的JavaBean属性,而不用去看javadoc甚至源码。4。对接口编程。5。Spring应用中的大多数业务对象没有依赖于Spring。6。使用Spring构建的应用程序易于单元测试。
7。Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。8。Spring帮助你解决许多问题而无需使用EJB。 -
2004-10-20
AOP应用范围
Authentication 权限
Caching 缓存
Context passing 内容传递
Error handling 错误处理
Lazy loading 懒加载
Debugging 调试
logging, tracing, profiling and monitoring 记录跟踪 优化 校准
Performance optimization 性能优化
Persistence 持久化
Resource pooling 资源池
Synchronization 同步
Transactions 事务
from http://jessecn.blogdriver.com -
2004-10-20
Ioc模式(Dependency Injection模式)-
第一种类型 从JNDI或ServiceManager等获得被调用者,这里类似ServiceLocator模式。 1. EJB/J2EE
2. Avalon(Apache的一个复杂使用不多的项目)第二种类型 使用JavaBeans的setter方法 1. Spring Framework,
2. WebWork/XWork第三种类型 在构造方法中实现依赖 1. PicoContainer,
from http://jessecn.blogdriver.com -
2004-10-20
jpetstore学习笔记
-
2004-10-20
SiteMesh
-
2004-10-20
Struts + Spring + Hibernate 框架资源
-
2004-10-20
Good article about Hibernate
-
2004-10-20
Recommand web site!
http://www.tbg.co.uk/whatlog.php
A web site about Logistics...... -
2004-10-20
恭喜小胖
小胖结婚了,恭喜小胖和小胖嫂了!^_^ -
2004-09-28
中秋
中秋快乐!!!
-
2004-09-23
学英语!!
新公司里正式的交流都要用英语,没有办法,只有自己逼自己学习了。
不过,我是看电影来学的,也算是劳逸结合吧!!^_^
什么??问我看什么??
啊~~~~~~,主要有<<Discovery>>,<<Pertender>>,<<Friends>>等等等等,强烈推荐<<Pertender>>!!!! -
2004-08-17
明天要去面试
明天要去面试,还有点小紧张呢!!
-
2004-07-16
OSWorkFlow
昨天试用了一下OSWorkFlow,没怎么弄明白。不过看它的例子倒是觉得挺不错的,是个好东西。要好好的学习一下......... -
2004-07-16
休假
下个星期开始休假,过几天好吃懒做的生活吧!!!^_^







