Create Query From Entity Manager

22854 ワード

  1 File: Professor.java

  2 

  3 

  4 import javax.persistence.Entity;

  5 import javax.persistence.Id;

  6 

  7 @Entity

  8 public class Professor {

  9     @Id

 10     private int id;

 11     private String name;

 12     private long salary;

 13 

 14     public Professor() {}

 15     public Professor(int id) {

 16         this.id = id;

 17     }

 18 

 19     public int getId() {

 20         return id;

 21     }

 22     

 23     public void setId(int id) {

 24         this.id = id;

 25     }

 26     

 27     public String getName() {

 28         return name;

 29     }

 30     

 31     public void setName(String name) {

 32         this.name = name;

 33     }

 34 

 35     public long getSalary() {

 36         return salary;

 37     }

 38 

 39     public void setSalary(long salary) {

 40         this.salary = salary;

 41     }

 42     

 43     public String toString() {

 44         return "Professor id: " + getId() + " name: " + getName() + " salary: " + getSalary();

 45     }

 46 }

 47 

 48 

 49 File: ProfessorService.java

 50 

 51 import java.util.Collection;

 52 

 53 import javax.persistence.EntityManager;

 54 import javax.persistence.Query;

 55 

 56 public class ProfessorService {

 57   protected EntityManager em;

 58 

 59   public ProfessorService(EntityManager em) {

 60     this.em = em;

 61   }

 62 

 63   public Professor createProfessor(int id, String name, long salary) {

 64     Professor emp = new Professor(id);

 65     emp.setName(name);

 66     emp.setSalary(salary);

 67     em.persist(emp);

 68     return emp;

 69   }

 70 

 71   public void removeProfessor(int id) {

 72     Professor emp = findProfessor(id);

 73     if (emp != null) {

 74       em.remove(emp);

 75     }

 76   }

 77 

 78   public Professor raiseProfessorSalary(int id, long raise) {

 79     Professor emp = em.find(Professor.class, id);

 80     if (emp != null) {

 81       emp.setSalary(emp.getSalary() + raise);

 82     }

 83     return emp;

 84   }

 85 

 86   public Professor findProfessor(int id) {

 87     return em.find(Professor.class, id);

 88   }

 89 

 90   public Collection<Professor> findAllProfessors() {

 91     Query query = em.createQuery("SELECT e FROM Professor e");

 92     return (Collection<Professor>) query.getResultList();

 93   }

 94 }

 95 

 96 

 97 File: JPAUtil.java

 98 

 99 import java.io.Reader;

100 import java.sql.Connection;

101 import java.sql.DriverManager;

102 import java.sql.ResultSet;

103 import java.sql.ResultSetMetaData;

104 import java.sql.Statement;

105 

106 public class JPAUtil {

107   Statement st;

108   

109   public JPAUtil() throws Exception{

110     Class.forName("org.hsqldb.jdbcDriver");

111     System.out.println("Driver Loaded.");

112     String url = "jdbc:hsqldb:data/tutorial";

113 

114     Connection conn = DriverManager.getConnection(url, "sa", "");

115     System.out.println("Got Connection.");

116     st = conn.createStatement();

117   }

118   public void executeSQLCommand(String sql) throws Exception {

119     st.executeUpdate(sql);

120   }

121   public void checkData(String sql) throws Exception {

122     ResultSet rs = st.executeQuery(sql);

123     ResultSetMetaData metadata = rs.getMetaData();

124 

125     for (int i = 0; i < metadata.getColumnCount(); i++) {

126       System.out.print("\t"+ metadata.getColumnLabel(i + 1)); 

127     }

128     System.out.println("
----------------------------------"); 129 130 while (rs.next()) { 131 for (int i = 0; i < metadata.getColumnCount(); i++) { 132 Object value = rs.getObject(i + 1); 133 if (value == null) { 134 System.out.print("\t "); 135 } else { 136 System.out.print("\t"+value.toString().trim()); 137 } 138 } 139 System.out.println(""); 140 } 141 } 142 } 143 144 145 File: Main.java 146 147 import java.util.Collection; 148 import java.util.Iterator; 149 150 import javax.persistence.EntityManager; 151 import javax.persistence.EntityManagerFactory; 152 import javax.persistence.Persistence; 153 154 public class Main { 155 public static void main(String[] a) throws Exception { 156 JPAUtil util = new JPAUtil(); 157 158 EntityManagerFactory emf = Persistence.createEntityManagerFactory("ProfessorService"); 159 EntityManager em = emf.createEntityManager(); 160 ProfessorService service = new ProfessorService(em); 161 162 em.getTransaction().begin(); 163 164 Professor emp = service.createProfessor(1,"name", 100); 165 emp = service.createProfessor(2,"name 2", 100); 166 167 Collection emps = em.createQuery("SELECT e FROM Professor e").getResultList(); 168 for (Iterator i = emps.iterator(); i.hasNext();) { 169 Professor e = (Professor) i.next(); 170 System.out.println("Professor " + e.getId() + ", " + e.getName()); 171 } 172 util.checkData("select * from Professor"); 173 174 em.getTransaction().commit(); 175 em.close(); 176 emf.close(); 177 } 178 } 179 180 181 182 183 File: persistence.xml 184 185 <persistence xmlns="http://java.sun.com/xml/ns/persistence" 186 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 187 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence" version="1.0"> 188 <persistence-unit name="JPAService" transaction-type="RESOURCE_LOCAL"> 189 <properties> 190 <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/> 191 <property name="hibernate.hbm2ddl.auto" value="update"/> 192 <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/> 193 <property name="hibernate.connection.username" value="sa"/> 194 <property name="hibernate.connection.password" value=""/> 195 <property name="hibernate.connection.url" value="jdbc:hsqldb:data/tutorial"/> 196 </properties> 197 </persistence-unit> 198 </persistence>