Java Votary
BlogJava
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
48 隨筆 :: 1 文章 :: 80 評(píng)論 :: 0 Trackbacks
<
2005年12月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(7)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
Ajax(7)
(rss)
ASP模式(3)
(rss)
Java(17)
(rss)
Javascript(2)
(rss)
Ruby
(rss)
Rule Engine(6)
(rss)
SOA(2)
(rss)
Springframework(4)
(rss)
Web Service
(rss)
Web服務(wù)器(1)
(rss)
企業(yè)架構(gòu)模式(2)
(rss)
雜項(xiàng)(2)
(rss)
設(shè)計(jì)模式
(rss)
隨筆檔案
2009年7月 (1)
2006年3月 (6)
2006年1月 (2)
2005年12月 (22)
2005年11月 (17)
文章檔案
2005年11月 (1)
搜索
最新評(píng)論
1.?re: Java Annotation入門(mén)
真心垃圾! 概念沒(méi)講清楚就開(kāi)始講解如何使用,這哪兒是入門(mén)? 這是浪費(fèi)大家時(shí)間。
--路人甲
2.?re: Java Annotation入門(mén)
不錯(cuò)
--bozhang
3.?re: Java Annotation入門(mén)
這看完了能入門(mén)?運(yùn)行原理都不說(shuō)下
--DFX
4.?re: Java Annotation入門(mén)[未登錄](méi)
翻譯的不錯(cuò)
--a
5.?re: Java Annotation入門(mén)
@c
翻譯的太爛
--Somebodi
閱讀排行榜
1.?Java Annotation入門(mén)(58797)
2.?【轉(zhuǎn)載】關(guān)于Java文件路徑問(wèn)題(31503)
3.?什么是Portlet ?(10055)
4.?[收藏]如何獲取客戶(hù)端MAC地址(9761)
5.?解決JAVA服務(wù)器性能問(wèn)題(5780)
評(píng)論排行榜
1.?Java Annotation入門(mén)(39)
2.?[轉(zhuǎn)]我的Java學(xué)習(xí)之路(8)
3.?【轉(zhuǎn)載】關(guān)于Java文件路徑問(wèn)題(8)
4.?什么是Portlet ?(5)
5.?在Java2平臺(tái)企業(yè)版中應(yīng)用異步JavaScript技術(shù)和XML(AJAX)(4)
【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
我是比較討厭xml的人,沒(méi)有強(qiáng)類(lèi)型,很多配置出錯(cuò),包括xdoclet都無(wú)法檢查。剛好現(xiàn)在的主流框架總算開(kāi)始支持annotation了,所以玩了一下配置,供參考:
hibernate3.05
hibernate-annotations-3.0beta2
spring1.21
幾個(gè)配置文件如下:
spring-database.xml(這個(gè)文件基本不變,有新的dao在底下加入一行即可。
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"
>
<
beans
>
<!--
========================= RESOURCE DEFINITIONS =========================
-->
<
bean
id
="dataSource"
class
="org.apache.commons.dbcp.BasicDataSource"
destroy-method
="close"
>
<
property
name
="driverClassName"
><
value
>
${jdbc.driverClassName}
</
value
></
property
>
<
property
name
="url"
><
value
>
${jdbc.url}
</
value
></
property
>
<
property
name
="username"
><
value
>
${jdbc.username}
</
value
></
property
>
<
property
name
="password"
><
value
>
${jdbc.password}
</
value
></
property
>
</
bean
>
<
bean
id
="sessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
<
property
name
="configurationClass"
><
value
>
org.hibernate.cfg.AnnotationConfiguration
</
value
></
property
>
<
property
name
="dataSource"
><
ref
bean
="dataSource"
/></
property
>
<
property
name
="configLocation"
><
value
>
/hibernate.cfg.xml
</
value
></
property
>
</
bean
>
<
bean
id
="transactionManager"
class
="org.springframework.orm.hibernate3.HibernateTransactionManager"
>
<
property
name
="sessionFactory"
><
ref
bean
="sessionFactory"
/></
property
>
<
property
name
="dataSource"
><
ref
bean
="dataSource"
/></
property
>
</
bean
>
<
bean
class
="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
/>
<
bean
class
="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"
>
<
property
name
="transactionInterceptor"
><
ref
bean
="transactionInterceptor"
/></
property
>
</
bean
>
<
bean
id
="transactionInterceptor"
class
="org.springframework.transaction.interceptor.TransactionInterceptor"
>
<
property
name
="transactionManager"
><
ref
bean
="transactionManager"
/></
property
>
<
property
name
="transactionAttributeSource"
>
<
bean
class
="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"
/>
</
property
>
</
bean
>
<!--
========================= DAO DEFINITIONS =========================
-->
<
bean
id
="testDao"
class
="org.steeven.TestDaoImpl"
>
<
property
name
="sessionFactory"
>
<
ref
bean
="sessionFactory"
/>
</
property
>
</
bean
>
<!--
========================= DAO DEFINITIONS =========================
-->
<bean id="mitService" class="org.steeven.TestServiceImpl"></bean>
</
beans
>
hibernate.cfg.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
<
property
name
="hibernate.hbm2ddl.auto"
>
create-drop
</
property
>
<
property
name
="hibernate.dialect"
>
org.hibernate.dialect.MySQLDialect
</
property
>
<
property
name
="hibernate.cglib.use_reflection_optimizer"
>
true
</
property
>
<
property
name
="default-lazy"
>
false
</
property
>
<!--
用于hibernate持久化的對(duì)象"
-->
<
mapping
class
="org.steeven.Test"
/>
<
listener
type
="pre-update"
class
="org.hibernate.validator.event.ValidatePreUpdateEventListener"
/>
<
listener
type
="pre-insert"
class
="org.hibernate.validator.event.ValidatePreInsertEventListener"
/>
</
session-factory
>
</
hibernate-configuration
>
上面兩個(gè)就是配置文件的全部了。下面看看代碼:
TestDao.java(注意,就是個(gè)普通的dao,事務(wù)控制由調(diào)用者標(biāo)注)
public
class
TestDaoImpl extends HibernateDaoSupport implements TestDao
{
public
void
save(Test
data)
{
getHibernateTemplate().saveOrUpdateAll(Arrays.asList(data));
}
}
Test.java
@Entity
@Proxy(lazy
=
false
)
public
class
Test
{
int
id;
String name;
Map
<
String, String
>
properties;
@Column(length
=
100
)
public
String getName()
{
return
name;
}
public
void
setName(String name)
{
this
.name
=
name;
}
@Id(generate
=
GeneratorType.AUTO)
public
int
getId()
{
return
id;
}
public
void
setId(
int
id)
{
this
.id
=
id;
}
@Transient
public
String getNotStoredProp()
{
return
null
;
}
@Type(type
=
"
org.steeven.database.MapUserType
"
)
@Column(name
=
"
properties
"
, length
=
1000
)
//
Map暫時(shí)不被支持,自己持久化到一個(gè)大字段
public
Map
<
String, String
>
getProperties()
{
return
properties;
}
public
void
setProperties(Map
<
String, String
>
properties)
{
this
.properties
=
properties;
}
}
TestServiceImpl.java(這個(gè)類(lèi)也是從spring中取得,關(guān)鍵就在@Transactional標(biāo)記)
@Transactional
public
class
TestServiceImpl implements TestService
{
public
void
save(Test
data)
{
TestDao dao
=
(TestDao)ServiceLocator.getInstance().getBean(
"
testDao
"
);
dao.save(data[
0
]);
if
(
true
)
throw
new
RuntimeException();
//
看看數(shù)據(jù)庫(kù)是不是什么都沒(méi)有?!
dao.save(data[
1
]);
}
}
現(xiàn)在很清爽了,所有的事務(wù)控制只需要加幾個(gè)@Transaction標(biāo)記。感謝hibernate+spring
另外,hibernate還提供了基于標(biāo)記的參數(shù)校驗(yàn),請(qǐng)參考下面文檔:
參考資源:
spring1.21自帶smaples/jpetstore
http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/
posted on 2005-12-13 23:32
Dion
閱讀(2260)
評(píng)論(2)
編輯
收藏
所屬分類(lèi):
Springframework
評(píng)論
#
re: 【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
2005-12-16 18:17
jess
safd
回復(fù)
更多評(píng)論
#
re: 【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
2006-08-14 13:20
westzq
我照著你的寫(xiě)了個(gè)為什么不能實(shí)現(xiàn)事務(wù)?
hibernate.cfg.xml中的
<listener type="pre-update" class="org.hibernate.validator.event.ValidatePreUpdateEventListener"/>
<listener type="pre-insert" class="org.hibernate.validator.event.ValidatePreInsertEventListener"/>
需要什么特殊配置嗎?
回復(fù)
更多評(píng)論
新用戶(hù)注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
在SPRING中實(shí)現(xiàn)事務(wù)暫停
【轉(zhuǎn)載】Spring中使用Annotation同時(shí)標(biāo)記JMS+數(shù)據(jù)庫(kù)事務(wù)
【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
擴(kuò)展 Spring 的 JMX 支持
Powered by:
BlogJava
Copyright © Dion
主站蜘蛛池模板:
岛国av无码免费无禁网站
|
两个人看的www免费高清
|
亚洲毛片αv无线播放一区
|
亚洲国产精品无码久久SM
|
亚洲一区二区三区免费在线观看
|
久久精品视频免费
|
久久精品国产亚洲AV香蕉
|
亚洲AV无码国产精品永久一区
|
18勿入网站免费永久
|
亚洲国产成人精品青青草原
|
一级看片免费视频
|
国产福利视精品永久免费
|
亚洲精品午夜视频
|
日韩精品无码区免费专区
|
亚洲国产欧美一区二区三区
|
免费v片在线观看无遮挡
|
av电影在线免费看
|
国产免费牲交视频
|
九九久久国产精品免费热6
|
亚洲精品色午夜无码专区日韩
|
亚洲av片在线观看
|
亚洲最大av无码网址
|
久久久久久久99精品免费观看
|
91亚洲va在线天线va天堂va国产
|
美女黄色毛片免费看
|
亚洲精品线路一在线观看
|
久久精品中文字幕免费
|
亚洲第一区精品日韩在线播放
|
在线免费视频你懂的
|
亚洲?V无码成人精品区日韩
|
久久国产精品免费一区
|
亚洲熟妇av一区二区三区下载
|
日本黄色免费观看
|
亚洲人成网站999久久久综合
|
亚洲av日韩av欧v在线天堂
|
免费无码又爽又刺激网站
|
国产亚洲sss在线播放
|
两个人的视频高清在线观看免费
|
立即播放免费毛片一级
|
又粗又大又猛又爽免费视频
|
免费黄色电影在线观看
|