??xml version="1.0" encoding="utf-8" standalone="yes"?>神马电影久久,99成人超碰,国产一区三区在线播放http://www.aygfsteel.com/Yako/Q-Q寻找javazh-cnSun, 18 May 2025 13:28:28 GMTSun, 18 May 2025 13:28:28 GMT60转蝲Qhibernate要点http://www.aygfsteel.com/Yako/archive/2006/01/08/27175.htmlYako的Java天地Yako的Java天地Sun, 08 Jan 2006 12:09:00 GMThttp://www.aygfsteel.com/Yako/archive/2006/01/08/27175.htmlhttp://www.aygfsteel.com/Yako/comments/27175.htmlhttp://www.aygfsteel.com/Yako/archive/2006/01/08/27175.html#Feedback0http://www.aygfsteel.com/Yako/comments/commentRss/27175.htmlhttp://www.aygfsteel.com/Yako/services/trackbacks/27175.htmlhibernate要点关键?/B>Q?hibernate                                          

1.两种配置文gQ?
  A.hibernate.cfg.xml   ?nbsp;  B.hibernate.properties

  A中可含映文件的配置Q而B中hard codes加映文件?/P>

  A。Configuration config=new Configuration().config();
  B. Configuration config=new Configuration();
     config.addClass(TUser.class);


2.你不必一定用hibernate.cfg.xml或hibernate.propertiesq两文g名,
   你也不一定非得把配置文g攑֜Classes下,
   File file=new File("c:\\sample\\myhibernate.xml");
   Configuration config=new Configuration().config(file);

3. session.Flush()
   强制数据库立卛_步,当用事务Ӟ不必用flush,事务提交自动调用flush
   在session关闭时也会调用flush


4. HibernateL使用对象cd作ؓ字段cd

5. XDoclet专门建立了hibernate doclet,是在java代码上加上一?
   java docTagQ后来再让XDoclet分析该java代码Q生成映文?

6.HQL子句本n大小写无养I但是其中出现的类名和属性名必须注意大小写区分?/P>

7.关系Q?
  Constrained : U束Q表明主控表的主键上是否存在一个外键(foreigh keyQ?
   对其q行U束?

  property-ref:兌cM用于与主控类相关联的属性名Q默认ؓ兌cȝ主键属性名

  单向一对多需在一斚w|,双向一对多需在双方进行配|?/P>

8.lazy=false:被动方的记录由hibernate负责记取Q之后存攑֜LҎ定的
  Collectioncd属性中

9. java.util.Set或net.sof.hibernate.collecton.Bagcd的Collection


10.重要Qinverse:用于标识双向兌中的被动方一端?
         inverse=false的一方(L方)负责l护兌关系.默认|false

11.batch-size:采用延迟加蝲特征Ӟ一ơ读入的数据数昨?/P>

12.一对多通过LҎ斎ͼL方ؓ一ҎQ?/P>

   user.getAddresses().add(addr);
   session.save(user);//通过L对象U联更新  

13.在one-to-many 关系中,many 一方设Z动方Qinverse=falseQ将有助性能
   的改善。在一方设|关pLQinverse=true,卛_L权交l多方,
   q样多方可主动从一方获得foreign key,然后一ơinsert卛_完工?


   addr.setUser(user);//讄兌的TUser对象
   user.getAddresses().add(addr);
   session.save(user);//U联更新 

14.只有设ؓL方的一Ҏ兛_Q访问)Ҏ的属性,被动Ҏ不关心对方的属性的?/P>

15.one-to-many与many-to-one节点的配|属性不同:
   一对多关系多了lazy和inverse两个属?
   多对多节点属性:column:中间映射表中Q关联目标表的关联字D?
                   class:cdQ关联目标类
                   outer-join:是否使用外联?nbsp;   

   注意:access是设|属性值的d方式?/P>


        column是设|关联字Dc?


16.多对多,注意两方都要讄inverse和lazy,cascade只能设ؓinsert-update
   多对多关pMQ由于关联关pL两张表相互引用,因此在保存关pȝ态时必须对双方同时保存?

   group1.getRoles().add(role1);
   role1.getGroups().add(group1);

   session.save(role1);
   session.save(group1);

17.关于vo和po
   vol过hibernate定w处理Q就变成了po(该vo的引用将被容器保存,q且在session关闭时flush,因此po如果再传到其它地Ҏ变了Q就危险?
 
   vo和po怺转换QBeanUtils.copyProperties(anotherUser,user);

18.对于save操作而言Q如果对象已l与Session相关联(卛_l被加入Session的实体容器中Q,则无需q行具体的操作。因Z后的Session.flushq程中,Hibernate
会对此实体容器中的对象进行遍历,查找出发生变化的实体Q生成ƈ执行相应的update
语句?

19.如果我们采用了gq加载机Ӟ但希望在一些情况下Q实现非延迟?
载时的功能,也就是说Q我们希望在Session关闭后,依然允许操作user的addresses
属?
Hibernate.initializeҎ可以通过强制加蝲兌对象实现q一功能Q?
q也正是我们Z么在~写POJOӞ必须用JDK Collection接口Q如Set,MapQ?
而非特定的JDK Collection实现c(如HashSet、HashMapQ申明Collection属性的
原因?

20.事务Q从sessionFactory获得session,其自动提交属性就已经关闭(AutoCommit=false),此时若执行了jdbc操作Q如果不昑ּ调用session.BeginTransaction(),是不会执行事务操作的?/P>

   jdbc transaction:Z同一个session(是同一个connection)的事?
   jta  transaction:跨sessionQ跨connectionQ事?

   对于jta事务Q有三种实现ҎQ?
     A。UserTransaction tx=new InitialContext().lookup("...");
        tx.commit();
     B. 使用hibernate装的方法:(不推?
        Transaction tx=session.beginTransaction();
        tx.commit();
     C. 使用ejb之sessionBean的事务技持方法,你只要在把需要在发布描述W中Q把需要jta事务的方法声明ؓrequire卛_

21.悲观锁,乐观锁:
   乐观锁一般通过version来实玎ͼ注意version节点必须出现在id后?


22.Hibernate中,可以通过Criteria.setFirstResult和Criteria.setFetchSizeҎ讑֮分页范围?
   Query接口中也提供了与其一致的ҎQhibernate主要在dialectcM实现在这个功能?


23.cache
  
 
 …?
  
   net.sf.ehcache.hibernate.Provider
  
 

  q需对ecache本nq配|?
 
 
  maxElementsInMemory="10000" //Cache中最大允怿存的数据数量
 eternal="false" //Cache中数据是否ؓ帔R
 timeToIdleSeconds="120" //~存数据钝化旉
 timeToLiveSeconds="120" //~存数据的生存时?
 overflowToDisk="true" //内存不Ӟ是否启用盘~存
 />
 

  之后在映文件中指定各个映射实体的cache{略
 
 
 ....
 
  
 ....
 

 

 *****************************************************
 Query.list()跟Query.iterate()的不同:
 对于query.list()L通过一条sql语句获取所有记?然后其dQ填入pojoq回;
 但是query.iterate()Q则是首先通过一条Select SQL 获取所有符合查询条件的记录?
idQ再对这个id 集合q行循环操作Q通过单独的Select SQL 取出每个id 所对应的记
录,之后填入POJO中返回?

 也就是说Q对于list 操作Q需要一条SQL 完成。而对于iterate 操作Q需要n+1
条SQL。,listҎ不会从Cache中读取数据。iterator却会?


24.ThreadLocal:它会为每个线E维护一个私有的变量I间。实际上Q?
其实现原理是在JVM 中维护一个MapQ这个Map的key 是当前的线E对象,而value则是
U程通过ThreadLocal.setҎ保存的对象实例。当U程调用ThreadLocal.getҎӞ
ThreadLocal会根据当前线E对象的引用Q取出Map中对应的对象q回?

 q样QThreadLocal通过以各个线E对象的引用作ؓ区分Q从而将不同U程的变量隔d
来?


25.Hibernate官方开发手册标准示?
  public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
sessionFactory = new
Configuration().configure().buildSessionFactory();
} catch (HibernateException ex) {
throw new RuntimeException(
"Configuration problem: " + ex.getMessage(),
ex
);
}
}
public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException
{
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}


    
26.通过filter实现session的重用:
   public class PersistenceFilter implements Filter
{
protected static ThreadLocal hibernateHolder = new ThreadLocal();
public void doFilter(ServletRequest request, ServletResponse
response, FilterChain chain)
throws IOException, ServletException
{
hibernateHolder.set(getSession());
try
{
…?
chain.doFilter(request, response);
…?
}
finally
{
Session sess = (Session)hibernateHolder.get();
if (sess != null)
{
hibernateHolder.set(null);
try
{
sess.close();
}
catch (HibernateException ex) {
throw new ServletException(ex);
}
}
}
}
……}



]]>
mysql理问题http://www.aygfsteel.com/Yako/archive/2005/12/30/26033.htmlYako的Java天地Yako的Java天地Fri, 30 Dec 2005 04:38:00 GMThttp://www.aygfsteel.com/Yako/archive/2005/12/30/26033.htmlhttp://www.aygfsteel.com/Yako/comments/26033.htmlhttp://www.aygfsteel.com/Yako/archive/2005/12/30/26033.html#Feedback2http://www.aygfsteel.com/Yako/comments/commentRss/26033.htmlhttp://www.aygfsteel.com/Yako/services/trackbacks/26033.html
输入
mysqld-nt -remove
mysqld-nt -install
再启动服?BR>
后问题解?BR>


]]>
վ֩ģ壺 | | ̨| | | | | | ˮ| | | | ֲ| ϴ| | ˰| ̨| ɽ| | | ̳| | Ͼ| ʤ| Դ| | | ̨| Ϫ| ؼ| | | | | »| ǭ| ÷| | | °Ͷ| |