1. tx 配置方法, 代码示例

javabean及其映射文件省略,和上篇的一样

CustomerDao.java, dao层接口

public interface CustomerDao {
	public void insertCustomer(Customer c);
	public void updateCustomer(Customer c);
	public List<Customer> findCustomerByName(String name);
	
	//批量保存
	//public void saveCustomers(List<Customer> list);
}

CustomerDaoImpl.java ,dao层实现

public class CustomerDaoImpl implements CustomerDao {

	private SessionFactory sf ;
	public void setSf(SessionFactory sf) {
		this.sf = sf;
	}

	public List<Customer> findCustomerByName(String name) {
		String hql = "from Customer c where c.name = ?";
		Query q = sf.getCurrentSession().createQuery(hql);
		q.setString(0, name);
		return q.list();
	}

	public void insertCustomer(Customer c) {
		sf.getCurrentSession().save(c);
	}

	public void updateCustomer(Customer c) {
		sf.getCurrentSession().update(c);
	}
}

CustomerService.java ,service层接口

public interface CustomerService {
	public void insertCustomer(Customer c);
	public void updateCustomer(Customer c);
	public List<Customer> findCustomerByName(String name);
	
	//批量保存
	public void saveCustomers(List<Customer> list);
}

CustomerServiceImpl.java,service层实现

public class CustomerServiceImpl implements CustomerService {
	//dao
	private CustomerDao dao ;

	//注入dao
	public void setDao(CustomerDao dao) {
		this.dao = dao;
	}

	public List<Customer> findCustomerByName(String name) {
		return dao.findCustomerByName(name);
	}

	public void insertCustomer(Customer c) {
		dao.insertCustomer(c);
	}

	/**
	 * 批量保存, 编程式事务管理
	 */
	public void saveCustomers(final List<Customer> list) {
		for(Customer c : list){
			this.insertCustomer(c);
		}
	}

	public void updateCustomer(Customer c) {
		dao.updateCustomer(c);
	}
}

jdbc.properties

jdbc.driverclass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=root

c3p0.pool.size.max=10
c3p0.pool.size.min=2
c3p0.pool.size.ini=3
c3p0.pool.size.increment=2

hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=none

sh.xml,spring配置文件

App.java 测试代码

public class App {

	public static void main(String[] args) throws SQLException {
		ApplicationContext ac = new ClassPathXmlApplicationContext(
				"cn/itcast/spring/hibernate/tx25/sh.xml");
		CustomerService cs = (CustomerService) ac.getBean("customerService");
		List<Customer> list = new ArrayList<Customer>();
		Customer c = null ;
		for(int i = 0 ; i < 10 ; i++){
			c = new Customer();
			if(i == 9){
				c.setName(null);
			}
			else{
				c.setName("tom" + i);
			}
			c.setAge(20 + i);
			list.add(c);
		}
		cs.saveCustomers(list);
	}

}


2. aspectj 配置方法 代码示例

和(1)tx方式相比只有两个文件有变动

CustomerServiceImpl.java, service实现 以加注解的方式

/**
 * 通过注解方法实现事务管理
 */
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)
public class CustomerServiceImpl implements CustomerService {
	//dao
	private CustomerDao dao ;

	//注入dao
	public void setDao(CustomerDao dao) {
		this.dao = dao;
	}

	/**
	 * 只读
	 */
	@Transactional(readOnly=true)
	public List<Customer> findCustomerByName(String name) {
		return dao.findCustomerByName(name);
	}

	public void insertCustomer(Customer c) {
		dao.insertCustomer(c);
	}

	/**
	 * 批量保存, 编程式事务管理
	 */
	public void saveCustomers(final List<Customer> list) {
		for(Customer c : list){
			this.insertCustomer(c);
		}
	}

	public void updateCustomer(Customer c) {
		dao.updateCustomer(c);
	}
}

sh.xml 配置文件







 

相关文章:

  • 2022-02-10
  • 2021-08-25
  • 2022-12-23
  • 2021-09-18
  • 2021-06-01
  • 2021-04-04
  • 2021-09-17
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-06
  • 2021-07-19
相关资源
相似解决方案