日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询

發布時間:2024/1/23 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1 整體結構


client文件存放 ejb客戶端的一些jar包

Animal.java 中配置命名查詢

Person.java 中實現了方法監聽和類監聽兩種監聽方式( 在增刪查改方法執行之前后之后調用監聽方法)

JpaCurdTest.java 為 Junit測試增刪查改


2 代碼

Animal.java

package leaning.entity;import java.io.Serializable;import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.InheritanceType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery;/*** 單表繼承A* */ @Entity@NamedQueries( // 命名查詢{@NamedQuery(name="searchAnimals",query="select a FROM Animal a where a.name like :name"), @NamedQuery(name="searchAllAnimals",query="select a FROM Animal a")} )public class Animal implements Serializable{@Id@GeneratedValueprivate int id;private String name;private String sex;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}
Person.java

package leaning.entity;import java.io.Serializable;import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.PrePersist;@Entity @EntityListeners(PersonListener.class) // 監聽方法2 ,自定義在一個類中 public class Person implements Serializable{@Id@GeneratedValueprivate int id;private String name;private String address;public int getId() {return id;}/*** 監聽方法1* 實體對象的回調方法,通過PrePersist注解,可以將這個方法變為* 當實體對象被保存之前自動調用的方法* 可用注解有 : PrePersist,PostPersist,PreRemove,PostRemove* PreUpdate,PostUpdate,PostLoad* **/@PrePersistpublic void doSomeThing(){System.out.println("@PrePersist 實體對象即將保存 : name = " + name);}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}
PersonListener.java

package leaning.entity;import javax.persistence.PostPersist;public class PersonListener {/*** 自動調用該方法* */@PostPersistpublic void doSomething(Person person){System.out.println("@PostPersist 實體對象已經被加載, name = " + person.getName()); }}
PersonManager.java

package leaning.entity;import java.util.List;public interface PersonManager {public void addPerson(String name);public void removePerson(int id);public void removePerson1(int id);public void updatePerson(int id,String updateName);public Person findPerson(int id);public Person findPerson2(int id);public List searchPerson1();public List searchPerson2();public List searchPerson3();public List searchAnimals();public List searchAllAnimals();}
PersonManagerBean.java

package leaning.entity;import java.util.List;import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;@Stateless(name="personManager") @Remote public class PersonManagerBean implements PersonManager{@PersistenceContext(unitName="curdUnit")private EntityManager em;public void addPerson(String name) {Person p = new Person();p.setName(name);em.persist(p);}public void removePerson(int id) {Person p = em.find(Person.class, id);em.remove(p);}//這種方法不能刪除public void removePerson1(int id) {Person p = new Person();p.setId(id);em.remove(p);}public void updatePerson(int id, String updateName) {Person p = new Person();p.setId(id);p.setName(updateName);em.merge(p);}public Person findPerson(int id) {//相當于hibernate中的get操作return em.find(Person.class, id);}public Person findPerson2(int id) {//相當于hibernate中的Load操作,加載的是一個代理類return em.getReference(Person.class, id);}//利用EJB-QL 查詢所有的人員public List searchPerson1() {return em.createQuery("from Person").getResultList();}public List searchPerson2() {return em.createQuery("select p from Person p where p.name like ?").setParameter(1, "%李%") //索引值從1開始{與hibernate中從0開始不同}.getResultList();}public List searchPerson3() {return em.createQuery("select p from Person p where p.name like :name").setParameter("name", "%李%") .getResultList();}/*** 測試命名查詢和多臺查詢* */public List searchAnimals() {return em.createNamedQuery("searchAnimals").setParameter("name", "%鴨%").getResultList();}public List searchAllAnimals() {return em.createNamedQuery("searchAllAnimals").getResultList();}}
測試類?JpaCurdTest.java

package leaning.test;import static org.junit.Assert.*;import java.util.List;import javax.naming.InitialContext; import javax.naming.NamingException;import leaning.entity.Animal; import leaning.entity.Person; import leaning.entity.PersonManager;import org.junit.Test;/*** JPA增刪查改測試* **/ public class JpaCurdTest {@Testpublic void test() throws NamingException {}@Testpublic void testAddPerson() {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");personManager.addPerson("張三");} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testRemovePerson() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");personManager.removePerson(3);} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testRemovePerson1() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");personManager.removePerson1(3);} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testUpdatePerson() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");personManager.updatePerson(3, "updateName");} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testFindPerson() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");Person p = personManager.findPerson(4);System.out.println("name = " + p.getName());} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testFindPerson2() {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");Person p = personManager.findPerson2(4);System.out.println("name = " + p.getName());} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testSearchPerson1() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");List list = personManager.searchPerson1();showList(list);} catch (NamingException e) {e.printStackTrace();}}private void showList(List<Person> list){if(list==null) return ;for(int i = 0 ; i < list.size() ; i++){Person p = list.get(i);System.out.println("name = " + p.getName());}}private void showAnimalList(List<Animal> list){if(list==null) return ;for(int i = 0 ; i < list.size() ; i++){Animal animal = list.get(i);System.out.println("name = " + animal.getName() );}}@Testpublic void testSearchPerson2() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");List list = personManager.searchPerson2();showList(list);} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testSearchPerson3() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");List list = personManager.searchPerson3();showList(list);} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testSearchAnimals() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");List list = personManager.searchAnimals();showAnimalList(list);} catch (NamingException e) {e.printStackTrace();}}@Testpublic void testSearchAllAnimals() throws NamingException {InitialContext context;try {context = new InitialContext();PersonManager personManager = (PersonManager)context.lookup("personManager/remote");List list = personManager.searchAllAnimals();showAnimalList(list);} catch (NamingException e) {e.printStackTrace();}}}
persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"><persistence-unit name="curdUnit" transaction-type="JTA"><jta-data-source>java:/MySqlDS</jta-data-source><properties><property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /><property name="hibernate.hbm2ddl.auto" value="update"/></properties></persistence-unit></persistence>
jndi.properties

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost java.naming.factory.url.pkgs=org.jboss.naming\:org.jnp.interfaces

總結

以上是生活随笔為你收集整理的(9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。