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
主站蜘蛛池模板:
日韩免费电影网址
|
亚洲最大天堂无码精品区
|
亚洲精品无码专区久久同性男
|
大地资源二在线观看免费高清
|
在线观看H网址免费入口
|
日韩在线播放全免费
|
免费看又黄又无码的网站
|
日韩人妻无码精品久久免费一
|
国产午夜亚洲精品理论片不卡
|
午夜影视在线免费观看
|
好男人视频在线观看免费看片
|
在线免费观看一区二区三区
|
全免费a级毛片免费看不卡
|
性感美女视频免费网站午夜
|
破了亲妺妺的处免费视频国产
|
国产麻豆免费观看91
|
亚洲AV无码不卡在线观看下载
|
亚洲免费福利视频
|
www.黄色免费网站
|
永久免费av无码网站大全
|
国产一区二区三区在线免费观看
|
四虎精品视频在线永久免费观看
|
免费观看AV片在线播放
|
免费鲁丝片一级在线观看
|
亚洲AV伊人久久青青草原
|
久久亚洲av无码精品浪潮
|
亚洲成色在线综合网站
|
在线观看亚洲人成网站
|
亚洲第一成人在线
|
老司机午夜在线视频免费
|
十八禁视频在线观看免费无码无遮挡骂过
|
永久在线观看免费视频
|
18女人腿打开无遮掩免费
|
18禁超污无遮挡无码免费网站国产
|
国产成人精品亚洲
|
最近免费字幕中文大全
|
最近中文字幕无免费
|
日韩电影免费在线
|
亚洲欧洲日产国码无码网站
|
亚洲欧洲在线播放
|
精品国产日韩亚洲一区91
|