﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-robbie-随笔分类-EJB3</title><link>http://www.blogjava.net/robbie/category/22240.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 15 Jun 2007 16:41:50 GMT</lastBuildDate><pubDate>Fri, 15 Jun 2007 16:41:50 GMT</pubDate><ttl>60</ttl><item><title>Hibernate3.2 与 EJB3.0</title><link>http://www.blogjava.net/robbie/archive/2007/05/10/116593.html</link><dc:creator>三十而立</dc:creator><author>三十而立</author><pubDate>Thu, 10 May 2007 13:08:00 GMT</pubDate><guid>http://www.blogjava.net/robbie/archive/2007/05/10/116593.html</guid><wfw:comment>http://www.blogjava.net/robbie/comments/116593.html</wfw:comment><comments>http://www.blogjava.net/robbie/archive/2007/05/10/116593.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/robbie/comments/commentRss/116593.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robbie/services/trackbacks/116593.html</trackback:ping><description><![CDATA[今天才了解到，Hibernate3.2已经全面支持EJB3.0中的JPA规范。<br><br>看来对新技术了解不够，只顾了看EJB3.0的规范了<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0><br><br>感觉Hibernate3.2全面支持EJB3.0的规范对于EJB3的推广来说是件好事，至少在ORM这方面，一般程序员积累的经验可以很快速的适应EJB3.0的开发。只要继续加强对EJB容器、事务处理等方面的学习，就可以对EJB3有全面完整的了解。比起以前EJB2.1和常用技术的格格不入而言，真的是很大的进步了。
<img src ="http://www.blogjava.net/robbie/aggbug/116593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robbie/" target="_blank">三十而立</a> 2007-05-10 21:08 <a href="http://www.blogjava.net/robbie/archive/2007/05/10/116593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3.0 -- Study -- 1</title><link>http://www.blogjava.net/robbie/archive/2007/05/07/115712.html</link><dc:creator>三十而立</dc:creator><author>三十而立</author><pubDate>Mon, 07 May 2007 15:42:00 GMT</pubDate><guid>http://www.blogjava.net/robbie/archive/2007/05/07/115712.html</guid><wfw:comment>http://www.blogjava.net/robbie/comments/115712.html</wfw:comment><comments>http://www.blogjava.net/robbie/archive/2007/05/07/115712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/robbie/comments/commentRss/115712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robbie/services/trackbacks/115712.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 12pt"><img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emstar.gif" align=absMiddle border=0>EntityManager的定义<br><br>The EntityManager manages the O/R mapping between a fixed set of entity classes and an underlying data source. <br>It provides APIs for creating queries, finding objects, synchronizing objects, and inserting objects into the database. <br>It also can provide caching and manage the interaction between an entity and transactional services in a Java EE environment such as JTA. <br>The EntityManager is tightly integrated with Java EE and EJB but is not limited to this environment; it can be used in plain Java programs.<br><br>An EntityManager maps a fixed set of classes to a particular database. This set of classes is called a persistence unit<a name=IDX-CHP-5-0443></a> .<br><br>In Java SE, entity managers are created using a javax.persistence.EntityManagerFactory<a name=IDX-CHP-5-0458></a> <a name=IDX-CHP-5-0459></a><br>Example：<br>&nbsp;&nbsp;&nbsp; EntityManagerFactory factory = Persistence.createEntityManagerFactory("titan", map);<br>&nbsp;&nbsp;&nbsp; EntityManager manager = factory.createEntityManager();<br>在Java SE环境中，使用完EntityManagerFactory后，最好将其关闭，以释放其占有的资源。<br><br>和Java SE环境不一样，在Java EE中，一个注入的EntityManagerFactory会被EJB容器自动关闭，实际上，如果你调用EntityManagerFactory的clost()方法时，会抛出IllegalStateException异常。 <br><br><span style="COLOR: #808080">public interface EntityManager {<br>&nbsp;&nbsp; public void persist(Object entity);<br>&nbsp;&nbsp; public &lt;T&gt; T find(Class &lt;T&gt; entityClass, Object primaryKey);<br>&nbsp;&nbsp; public &lt;T&gt; T getReference(Class &lt;T&gt; entityClass, Object primaryKey);<br>&nbsp;&nbsp; public &lt;T&gt; T merge(T entity);<br>&nbsp;&nbsp; public void remove(Object entity);<br>&nbsp;&nbsp; public void lock(Object entity, LockModeType lockMode);<br><br>&nbsp;&nbsp; public void refresh(Object entity);<br>&nbsp;&nbsp; public boolean contains(Object entity);<br>&nbsp;&nbsp; public void clear( );<br><br>&nbsp;&nbsp; public void joinTransaction( );<br>&nbsp;&nbsp; public void flush( );<br>&nbsp;&nbsp; public FlushModeType getFlushMode( );<br>&nbsp;&nbsp; public void setFlushMode(FlushModeType type);<br><br>&nbsp;&nbsp; public Query createQuery(String queryString);<br>&nbsp;&nbsp; public Query createNamedQuery(String name);<br>&nbsp;&nbsp; public Query createNativeQuery(String sqlString);<br>&nbsp;&nbsp; public Query createNativeQuery(String sqlString, String resultSetMapping);<br>&nbsp;&nbsp; public Query createNativeQuery(String sqlString, Class resultClass);<br><br>&nbsp;&nbsp; public Object getDelegate( );<br><br>&nbsp;&nbsp; public void close( );<br>&nbsp;&nbsp; public boolean isOpen( );<br>}<br></span><br><img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emstar.gif" align=absMiddle border=0>Persistence context的定义<br><br>A persistence context<a name=IDX-CHP-5-0408></a> <a name=IDX-CHP-5-0409></a><a name=IDX-CHP-5-0410></a>is a set of managed entity object instances. <br>Persistence contexts are managed by an entity manager.<br><br>There are two types of persistence contexts: transaction-scoped<a name=IDX-CHP-5-0411></a> and extended persistence contexts.<br><br></p>
<p style="FONT-SIZE: 12pt">A persistence context can be created by calling the EntityManagerFactory.createEntityManager( ) method. The returned EntityManager instance represents an extended persistence context. If the EntityManagerFactory is JTA-enabled, then you have to explicitly enlist the EntityManager instance within a transaction by calling the EntityManager.joinTransaction( ) method. If you do not enlist the EntityManager within the JTA transaction, then changes you make to your entities are not synchronized with the database.<br><br><img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emstar.gif" align=absMiddle border=0>FlushModeType的含义<br><br>FlushModeType默认为AUTO模式，当为AUTO时，在一个查询被执行前，会自动将变化提交到数据库中，即调用flush()方法。但是调用find()或getreference()方法时，并不会执行自动提交。当为COMMIT模式时，仅仅在事务提交时，会将变化提交到数据库中。<br><br><img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emstar.gif" align=absMiddle border=0>EJB3中的实体注解规范参见如下链接<br><a href="http://wiki.redsaga.com/confluence/display/HART/Home">http://wiki.redsaga.com/confluence/display/HART/Home</a><br><br></p>
<img src ="http://www.blogjava.net/robbie/aggbug/115712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robbie/" target="_blank">三十而立</a> 2007-05-07 23:42 <a href="http://www.blogjava.net/robbie/archive/2007/05/07/115712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>