spring+hibernate jpa(一)
package domain;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.NamedQueries;import javax.persistence.NamedQuery;import javax.persistence.Table;/** * User generated by MyEclipse Persistence Tools */@Entity@Table(name = "user", catalog = "shopping")@NamedQueries(value = {@NamedQuery(name = "User.findAllUsers", query = "from User")})public class User implements java.io.Serializable { // Fields /** * */ private static final long serialVersionUID = 2172281412405163597L; @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; private String name; private String pswd; private String email; // Constructors /** default constructor */ public User() { } /** full constructor */ public User(Integer id, String name, String pswd, String email) { this.id = id; this.name = name; this.pswd = pswd; this.email = email; } // Property accessors @Id @Column(name = "ID", unique = true, nullable = false, insertable = true, updatable = true) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(name = "NAME", unique = false, nullable = false, insertable = true, updatable = true, length = 30) public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Column(name = "PSWD", unique = false, nullable = false, insertable = true, updatable = true, length = 45) public String getPswd() { return this.pswd; } public void setPswd(String pswd) { this.pswd = pswd; } @Column(name = "EMAIL", unique = false, nullable = false, insertable = true, updatable = true, length = 60) public String getEmail() { return this.email; } public void setEmail(String email) { this.email = email; }}
?
Userdao.javapackage com;import java.util.List;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.PersistenceException;import javax.persistence.Query;import org.springframework.orm.jpa.JpaCallback;import org.springframework.orm.jpa.JpaTemplate;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import domain.User;@Repositorypublic class Userdao { private EntityManagerFactory entityManagerFactory; public Userdao() { } protected JpaTemplate getJpaTemplate() { return new JpaTemplate(this.entityManagerFactory); } @Transactional // 声明为事务 public void createUser(User user) { final JpaTemplate jpaTemplate = getJpaTemplate(); jpaTemplate.persist(user); } @Transactional // 声明为事务 public void updateAndsaveUser(User user) { final JpaTemplate jpaTemplate = getJpaTemplate(); user = jpaTemplate.merge(user); System.out.println("修改完成"); } @Transactional public void deleteUser(User user) {// 注意与deleteUserById()方法的比较 final JpaTemplate jpaTemplate = getJpaTemplate();// 下面为什么没有用user // =jpaTemplate.merge(user); // 是因为下面的查找和删除都在一个事务中,user一直处于managed状态 user = jpaTemplate.merge(user); // change bean from detacthed to // managed; jpaTemplate.remove(user); } public User findUserById(Integer id) { final JpaTemplate jpaTemplate = getJpaTemplate(); return jpaTemplate.find(User.class, id); } @Transactional // 声明事务 public boolean deleteAllUsers() { final JpaTemplate jpaTemplate = getJpaTemplate(); return (Boolean) jpaTemplate.execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query q = em.createNativeQuery("Delete from User"); if (q.executeUpdate() == 0) return Boolean.TRUE; else return Boolean.FALSE; } }); } public List findAllUsers() { final JpaTemplate jpaTemplate = getJpaTemplate(); return jpaTemplate.findByNamedQuery("User.findAllUsers"); } @Transactional // 事务声明 删除操作必须在事务中才能完成 public boolean deleteUserById(Integer id) { User user = null; final JpaTemplate jpaTemplate = getJpaTemplate(); user = jpaTemplate.find(User.class, id); if (user != null) { jpaTemplate.remove(user); System.out.println("删除用户:" + user.getName() + "(id=" + user.getId() + ")"); return true; } else { System.out.println("无法删除用户(id=" + id + ")"); return false; } } public void setEntityManagerFactory( EntityManagerFactory entityManagerFactory) { this.entityManagerFactory = entityManagerFactory; }}?