基於注解的SSH整合
-
開發環節步驟:
實體類 -----> DAO開發 -----> Service開發 -----> Action動作類開發 -----> 配置文件(applicationContext.xml)
-
導包:
Struts2需要導入的jar:
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0-GA.jar
log4j-core-2.2.jar
log4j-api-2.2.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
xwork-core-2.3.24.jar
struts2-spring-plugin-2.3.24.jar
struts-contention-plugin-2.3.14.jar
導入struts2的注解開發包:struts-contention-plugin-2.3.14.jar
|------ 注意: 如果不使用注解開發,千萬不要導入這個包
spring需要導入的jar:
spring-aop-4.24.RELEASE.jar
spring-aspectJ-4.24.RELEASE.jar
spring-beans-4.24.RELEASE.jar
spring-context-4.24.RELEASE.jar
spring-core-4.24.RELEASE.jar
spring-expression-4.24.RELEASE.jar
spring-jdbc-4.24.RELEASE.jar
spring-orm-4.24.RELEASE.jar
spring-test-4.24.RELEASE.jar
spring-tx-4.24.RELEASE.jar
spring-web-4.24.RELEASE.jar
commons-logging-1.2.jar
com.springsource.org.com.mchange.v2.c3p0-0.9.1.2.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarhibernate需要導入的jar:
antrl2-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
geronimo-jpa-2.0-api-1.0.1.Final.jar
hibernate-core.5.0.7.Final.jar
hibernate-jpa-2.1.Final.jar
jandex-2.0.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.3.0.Final.jar2.1 配置文件詳解見 其他文章
-
實體類開發:
package cn.javabs.entity;
@Entity
@Table(name="t_user")
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@Column(name="username",length=50)
private String username;
private String password;
// 此處省略getter和setter方法
}在上述代碼中:
@Entity 注解為實體類制定類的路徑
@Id 注解是制定id為主鍵
@Generated 注解是為主鍵制定生成策略
以上注解實際上代表着hibernate的實體映射文件User.hbm.xml的功能。
-
DAO開發
@Repository
public class UserDaoImpl implementsn UserDao{
@Autowired
private HibernateTemplate hibernateTemplate;//提供Hibernate模板
public User findById(Integer id){
return this.hibernateTemplate.get(User.class,id);
}
public List<User> findAll(){
this.hibenrateTemplate.find("from User");
}
public void save(User user){
this.hibernateTemplate.save(user);
}
public void update(User user){
this.hibernateTemplate.update(user);
}
public void delete(User user){
this.hibernateTemplate.delete(user);
}
} -
-
Service開發
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Transactional
public void saveUser(User user){
this.userDao.save(user);
}
@Transactional
public void updateUser(User user){
this.userDao.update(user);
}
@Transactional
public void deleteUser(User user){
this.userDao.delete(user);
}
@Transactional(readOnly=true)
public User findUserById(Integer id){
return this.userDao.findById(id);
}
@Transactional(readOnly=true)
public User findAll(){
return this.userDao.findAll();
}
}在上述代碼中,使用@Service 注解用於標注Service層信息
@Autowired 用於自動注入UserDao接口
@Transactional注解用於配置事務,此時可以刪除掉spring配置文件中的相關的配置信息
-
Action開發
@Namespace("/")
@ParentPackage("struts-default")
@Controller
public class UserAction extentds ActionSupport implements ModelDriven<User>{
//封裝數據
private User user = new User();
public User getModel(){
return user;
}
@Autowired
private UserService userService;
@Action(value="user_Action_add",results={@Result(name="add",location="/success.jsp")})
public String add(){
userService.saveUser(user);
return "add";
}
}在以上代碼中,
@Namespace 和 @ ParentPackage 注解用於代替 Struts2 配置文件中對action的配置
@Controller 注解用於Spring 容器中注冊UserManagerAction實例
-
applicationContext.xml配置文件開發
<beans>
<!--1. 配置掃描-->
<context:component-scan base-package="cn.javabs"></context:component-scan>
<!--2.配置SessionFactory-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!--2.1 加載hibernate核心配置文件-->
<property name="configLocation"> value="classpath:hibernate.cfg.xml"></property>
</bean>
<!--3.配置hibernate模板-->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<!--3.1 通過工廠獲取session,操作PO類-->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--4.事務管理-->
<bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--事務注解驅動-->
<tx:annotation-driven transaction-manager="txManager"/>
</beans>6.hibernate.cfg.xml開發
<hibernate-configuration>
<session-factory>
<!--1.基本4項-->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/user</property>
<property name="connection.username">root</property>
<property name="connection.password">sorry</property>
<!--2.數據庫方言-->
<property name="dialect">org/hibernate.dialect.MySQL5Dialect</property>
<!--3.配置處理SQL信息-->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl_auto">update</property>
<!--4.取消Bean驗證-->
<property name="show_sql">true</property>
<!--5.整合 c3p0-->
<property name="connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<!--6.添加映射信息-->
<mapping class = "cn.javabs.entity.User"/>
</session-factory>
</hibernate-configuration>
基於注解的SSH整合
-
開發環節步驟:
實體類 —–> DAO開發 —–> Service開發 —–> Action動作類開發 —–> 配置文件(applicationContext.xml)
-
導包:
Struts2需要導入的jar:
asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.2.jar freemarker-2.3.22.jar javassist-3.11.0-GA.jar log4j-core-2.2.jar log4j-api-2.2.jar ognl-3.0.6.jar struts2-core-2.3.24.jar xwork-core-2.3.24.jar struts2-spring-plugin-2.3.24.jar struts-contention-plugin-2.3.14.jar
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
導入struts2的注解開發包:struts-contention-plugin-2.3.14.jar
|—— 注意: 如果不使用注解開發,千萬不要導入這個包
spring需要導入的jar:
spring-aop-4.24.RELEASE.jar spring-aspectJ-4.24.RELEASE.jar spring-beans-4.24.RELEASE.jar spring-context-4.24.RELEASE.jar spring-core-4.24.RELEASE.jar spring-expression-4.24.RELEASE.jar spring-jdbc-4.24.RELEASE.jar spring-orm-4.24.RELEASE.jar spring-test-4.24.RELEASE.jar spring-tx-4.24.RELEASE.jar spring-web-4.24.RELEASE.jar commons-logging-1.2.jar com.springsource.org.com.mchange.v2.c3p0-0.9.1.2.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
hibernate需要導入的jar:
antrl2-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar geronimo-jpa-2.0-api-1.0.1.Final.jar hibernate-core.5.0.7.Final.jar hibernate-jpa-2.1.Final.jar jandex-2.0.0.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.3.0.Final.jar
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.1 配置文件詳解見 其他文章
- 實體類開發:
package cn.javabs.entity; @Entity @Table(name="t_user") public class User{ @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column(name="username",length=50) private String username; private String password; // 此處省略getter和setter方法 }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
在上述代碼中:
@Entity 注解為實體類制定類的路徑
@Id 注解是制定id為主鍵
@Generated 注解是為主鍵制定生成策略
以上注解實際上代表着hibernate的實體映射文件User.hbm.xml的功能。
- DAO開發
@Repository public class UserDaoImpl implementsn UserDao{ @Autowired private HibernateTemplate hibernateTemplate;//提供Hibernate模板 public User findById(Integer id){ return this.hibernateTemplate.get(User.class,id); } public List<User> findAll(){ this.hibenrateTemplate.find("from User"); } public void save(User user){ this.hibernateTemplate.save(user); } public void update(User user){ this.hibernateTemplate.update(user); } public void delete(User user){ this.hibernateTemplate.delete(user); } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- Service開發
@Service public class UserServiceImpl implements UserService{ @Autowired private UserDao userDao; @Transactional public void saveUser(User user){ this.userDao.save(user); } @Transactional public void updateUser(User user){ this.userDao.update(user); } @Transactional public void deleteUser(User user){ this.userDao.delete(user); } @Transactional(readOnly=true) public User findUserById(Integer id){ return this.userDao.findById(id); } @Transactional(readOnly=true) public User findAll(){ return this.userDao.findAll(); } }
- 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
- 32
在上述代碼中,使用@Service 注解用於標注Service層信息
@Autowired 用於自動注入UserDao接口
@Transactional注解用於配置事務,此時可以刪除掉spring配置文件中的相關的配置信息
- Action開發
@Namespace("/") @ParentPackage("struts-default") @Controller public class UserAction extentds ActionSupport implements ModelDriven<User>{ //封裝數據 private User user = new User(); public User getModel(){ return user; } @Autowired private UserService userService; @Action(value="user_Action_add",results={@Result(name="add",location="/success.jsp")}) public String add(){ userService.saveUser(user); return "add"; } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
在以上代碼中,
@Namespace 和 @ ParentPackage 注解用於代替 Struts2 配置文件中對action的配置
@Controller 注解用於Spring 容器中注冊UserManagerAction實例
- applicationContext.xml配置文件開發
<beans> <!--1. 配置掃描--> <context:component-scan base-package="cn.javabs"></context:component-scan> <!--2.配置SessionFactory--> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!--2.1 加載hibernate核心配置文件--> <property name="configLocation"> value="classpath:hibernate.cfg.xml"></property> </bean> <!--3.配置hibernate模板--> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"> <!--3.1 通過工廠獲取session,操作PO類--> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!--4.事務管理--> <bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!--事務注解驅動--> <tx:annotation-driven transaction-manager="txManager"/> </beans>
- 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
6.hibernate.cfg.xml開發
<hibernate-configuration> <session-factory> <!--1.基本4項--> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/user</property> <property name="connection.username">root</property> <property name="connection.password">sorry</property> <!--2.數據庫方言--> <property name="dialect">org/hibernate.dialect.MySQL5Dialect</property> <!--3.配置處理SQL信息--> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl_auto">update</property> <!--4.取消Bean驗證--> <property name="show_sql">true</property> <!--5.整合 c3p0--> <property name="connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </property> <!--6.添加映射信息--> <mapping class = "cn.javabs.entity.User"/> </session-factory> </hibernate-configuration>
- 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
作者: 楊校
出處: https://blog.csdn.net/kese7952
分享是快樂的,也見證了個人成長歷程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 如有問題, 可郵件(397583050@qq.com)咨詢。