Spring 프레임워크 코어(3): 트랜잭션 관리 & SSH 통합
Conn.setAutoCommite(false); //
Session.beginTransaction(); //
[세립도 사무제어: 지정된 방법, 지정된 방법의 몇 줄에 사무제어를 추가할 수 있다] (유연하지만 개발하기가 비교적 번거롭다. 매번 열고 제출하고 굴러간다.)
2> 선언적 트랜잭션 관리
public class DeptDao {
// JdbcTemplate
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void save(Dept dept){
String sql = "insert into t_dept (deptName) values(?)";
jdbcTemplate.update(sql,dept.getDeptName());
}
}
public class DeptService {
// dao
private DeptDao deptDao;
public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
}
/*
* ?
*/
public void save(Dept dept){
//
deptDao.save(dept);
int i = 1/0; // : Service.save()
//
deptDao.save(dept);
}
}
@Test
public void testApp() throws Exception {
//
ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/a_tx/bean.xml");
//
Dept dept = new Dept();
dept.setDeptName(" : ");
DeptService deptService = (DeptService) ac.getBean("deptService");
deptService.save(dept);
}
- DeptService
@Service
public class DeptService {
@Resource
private DeptDao deptDao;
/*
*
*/
@Transactional
public void save(Dept dept){
deptDao.save(dept);
int i = 1/0;
deptDao.save(dept);
}
}
3 > 트랜잭션 속성
@Transactional(
readOnly = false, //
timeout = -1, //
noRollbackFor = ArithmeticException.class, //
isolation = Isolation.DEFAULT, // ,
propagation = Propagation.REQUIRED //
)
public void save(Dept dept){
deptDao.save(dept);
int i = 1/0;
deptDao.save(dept);
}
4 > Spring 및 Hibernate 통합
public class DeptDao {
// Spring Hibernate : IOC
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//
// Spring Hibernate : Spring
public void save(Dept dept) {
sessionFactory.getCurrentSession().save(dept);
}
}
public class DeptService {
private DeptDao deptDao;
public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
}
public void save(Dept dept){
deptDao.save(dept);
}
}
public class App {
//
private ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
@Test
public void testApp() throws Exception {
DeptService deptServie = (DeptService) ac.getBean("deptService");
System.out.println(deptServie.getClass());
deptServie.save(new Dept());
}
}
org.hibernate.dialect.MySQLDialect
true
update
classpath:cn/itcast/entity/
4 > SSH 통합
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.