Java Votary
BlogJava
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
48 隨筆 :: 1 文章 :: 80 評論 :: 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
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
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服務器(1)
(rss)
企業架構模式(2)
(rss)
雜項(2)
(rss)
設計模式
(rss)
隨筆檔案
2009年7月 (1)
2006年3月 (6)
2006年1月 (2)
2005年12月 (22)
2005年11月 (17)
文章檔案
2005年11月 (1)
搜索
最新評論
1.?re: Java Annotation入門
真心垃圾! 概念沒講清楚就開始講解如何使用,這哪兒是入門? 這是浪費大家時間。
--路人甲
2.?re: Java Annotation入門
不錯
--bozhang
3.?re: Java Annotation入門
這看完了能入門?運行原理都不說下
--DFX
4.?re: Java Annotation入門[未登錄]
翻譯的不錯
--a
5.?re: Java Annotation入門
@c
翻譯的太爛
--Somebodi
閱讀排行榜
1.?Java Annotation入門(58849)
2.?【轉載】關于Java文件路徑問題(31524)
3.?什么是Portlet ?(10078)
4.?[收藏]如何獲取客戶端MAC地址(9769)
5.?解決JAVA服務器性能問題(5793)
評論排行榜
1.?Java Annotation入門(39)
2.?[轉]我的Java學習之路(8)
3.?【轉載】關于Java文件路徑問題(8)
4.?什么是Portlet ?(5)
5.?在Java2平臺企業版中應用異步JavaScript技術和XML(AJAX)(4)
【轉載】hibernate3.0+ejb3 annotaion配置實戰+spring1.21 annotation事務控制
hibernate3.0+ejb3 annotaion配置實戰+spring1.21 annotation事務控制
我是比較討厭xml的人,沒有強類型,很多配置出錯,包括xdoclet都無法檢查。剛好現在的主流框架總算開始支持annotation了,所以玩了一下配置,供參考:
hibernate3.05
hibernate-annotations-3.0beta2
spring1.21
幾個配置文件如下:
spring-database.xml(這個文件基本不變,有新的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持久化的對象"
-->
<
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
>
上面兩個就是配置文件的全部了。下面看看代碼:
TestDao.java(注意,就是個普通的dao,事務控制由調用者標注)
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暫時不被支持,自己持久化到一個大字段
public
Map
<
String, String
>
getProperties()
{
return
properties;
}
public
void
setProperties(Map
<
String, String
>
properties)
{
this
.properties
=
properties;
}
}
TestServiceImpl.java(這個類也是從spring中取得,關鍵就在@Transactional標記)
@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();
//
看看數據庫是不是什么都沒有?!
dao.save(data[
1
]);
}
}
現在很清爽了,所有的事務控制只需要加幾個@Transaction標記。感謝hibernate+spring
另外,hibernate還提供了基于標記的參數校驗,請參考下面文檔:
參考資源:
spring1.21自帶smaples/jpetstore
http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/
posted on 2005-12-13 23:32
Dion
閱讀(2266)
評論(2)
編輯
收藏
所屬分類:
Springframework
評論
#
re: 【轉載】hibernate3.0+ejb3 annotaion配置實戰+spring1.21 annotation事務控制
2005-12-16 18:17
jess
safd
回復
更多評論
#
re: 【轉載】hibernate3.0+ejb3 annotaion配置實戰+spring1.21 annotation事務控制
2006-08-14 13:20
westzq
我照著你的寫了個為什么不能實現事務?
hibernate.cfg.xml中的
<listener type="pre-update" class="org.hibernate.validator.event.ValidatePreUpdateEventListener"/>
<listener type="pre-insert" class="org.hibernate.validator.event.ValidatePreInsertEventListener"/>
需要什么特殊配置嗎?
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
在SPRING中實現事務暫停
【轉載】Spring中使用Annotation同時標記JMS+數據庫事務
【轉載】hibernate3.0+ejb3 annotaion配置實戰+spring1.21 annotation事務控制
擴展 Spring 的 JMX 支持
Powered by:
BlogJava
Copyright © Dion
主站蜘蛛池模板:
色偷偷尼玛图亚洲综合
|
亚洲色自偷自拍另类小说
|
亚洲春色在线观看
|
四虎国产精品永久免费网址
|
无码国产精品一区二区免费
|
亚洲av福利无码无一区二区
|
免费精品久久天干天干
|
日韩亚洲人成在线综合日本
|
国产午夜免费高清久久影院
|
亚洲avav天堂av在线不卡
|
久爱免费观看在线网站
|
色婷婷亚洲十月十月色天
|
91青青青国产在观免费影视
|
亚洲的天堂av无码
|
91在线品视觉盛宴免费
|
亚洲精品美女久久7777777
|
最好免费观看韩国+日本
|
亚洲欧美在线x视频
|
亚洲午夜精品久久久久久浪潮
|
jzzjzz免费观看大片免费
|
亚洲AV无码国产丝袜在线观看
|
99久热只有精品视频免费看
|
亚洲啪啪免费视频
|
日日操夜夜操免费视频
|
一区二区视频在线免费观看
|
人人狠狠综合久久亚洲婷婷
|
3344永久在线观看视频免费首页
|
亚洲国产日韩精品
|
亚洲AⅤ优女AV综合久久久
|
a级毛片毛片免费观看久潮
|
亚洲福利一区二区精品秒拍
|
在线精品免费视频
|
九九九国产精品成人免费视频
|
亚洲高清专区日韩精品
|
成年在线观看网站免费
|
黄页网址大全免费观看12网站
|
亚洲狠狠久久综合一区77777
|
成人在线视频免费
|
最近免费中文字幕中文高清
|
国产91在线|亚洲
|
国产亚洲精品自在线观看
|