diff --git a/src/main/resources/Request.hbm.xml b/src/main/resources/Request.hbm.xml index b08773b..514de7c 100644 --- a/src/main/resources/Request.hbm.xml +++ b/src/main/resources/Request.hbm.xml @@ -12,7 +12,7 @@ - + diff --git a/src/test/java/hibernateTest/entities/Group.java b/src/test/java/hibernateTest/entities/Group.java index 6eacf5b..c083306 100644 --- a/src/test/java/hibernateTest/entities/Group.java +++ b/src/test/java/hibernateTest/entities/Group.java @@ -2,12 +2,15 @@ package hibernateTest.entities; import java.util.ArrayList; +import java.util.List; +import java.util.Set; public class Group { private String gId; private String uri, name; //private ArrayList members; - private ArrayList requests; + //private ArrayList requests; + private Set requests; public Group(){ @@ -51,6 +54,41 @@ return name; } + public Set getRequests(){ + return requests; + } + + public void setRequests(Set requests){ + this.requests = requests; + } + + public void addRequests(Request request){ + requests.add(request); + } + + public ArrayList getRequestsList(){ + ArrayList list = new ArrayList(getRequests()); + return list; + } + + +// public List getRequests(){ +// return requests; +// } +// +// public void setRequests(List requests){ +// this.requests = requests; +// } +// +// public void addRequests(Request request){ +// requests.add(request); +// } +// +// public ArrayList getRequestsList(){ +// ArrayList list = new ArrayList(getRequests()); +// return list; +// } + /*メンバー*/ //public ArrayList getMembersList(){ // return null; @@ -65,8 +103,5 @@ // members.remove(members.indexOf(uid)); // return null; //} - - /*リクエスト*/ - } diff --git a/src/test/java/hibernateTest/entities/Request.java b/src/test/java/hibernateTest/entities/Request.java index 1c84ea4..7c08d47 100644 --- a/src/test/java/hibernateTest/entities/Request.java +++ b/src/test/java/hibernateTest/entities/Request.java @@ -87,7 +87,6 @@ return done; } - public void setDone(boolean done) { this.done = done; } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index e7ac3f7..f4889a9 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -23,6 +23,7 @@ */ package hibernateTest.models; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -83,9 +84,9 @@ session.save( new Group("222", "http://test2", "friend", "022" ) ); Group newGroup = new Group("333", "http://test3", "school", "033" ); session.save(newGroup); //インスタンスを引数に渡すこともできます - session.save( new Request("111", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10",011)); - session.save( new Request("222", "http://test02", "1999.02.02", "033", "milk", "1999.04.10",011)); - session.save( new Request("333", "http://test03", "1999.03.03", "033", "ice", "1999.04.10",011)); + session.save( new Request("001", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10",011)); + session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10",011)); + session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10",011)); session.getTransaction().commit(); session.close(); @@ -94,7 +95,7 @@ session = sessionFactory.openSession(); session.beginTransaction(); //load()メソッドを用いて取得する方法。 - Request deleteRequest = (Request) session.load(Request.class, "222"); + Request deleteRequest = (Request) session.load(Request.class, "002"); //データの削除 if(deleteRequest != null){ session.delete(deleteRequest); @@ -107,7 +108,7 @@ session.beginTransaction(); //createCriteriaを用いて取得する方法。ただし非推奨。 //http://a4dosanddos.hatenablog.com/entry/2015/03/21/135421 - Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("rId", "333")); + Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("rId", "003")); Request editRequest = (Request) criteria.uniqueResult(); //データの更新 if(editRequest != null) { @@ -117,21 +118,81 @@ session.getTransaction().commit(); session.close(); + /*リレーション*/ + /*リクエストの追加*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + Group editGroup = session.load(Group.class, "111"); + if(editGroup != null){ + //リクエストはsession.save()をする必要がありません。 + //後のテスト用に4つのリクエストを追加しています。 + Request aditionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10",011); + Request aditionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10",011); + Request aditionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10",011); + editGroup.addRequests(aditionalrequest1); + editGroup.addRequests(aditionalrequest2); + editGroup.addRequests(aditionalrequest3); + session.update(editGroup); + } + session.getTransaction().commit(); + session.close(); + + session = sessionFactory.openSession(); + session.beginTransaction(); + editGroup = session.load(Group.class, "222"); + if(editGroup != null){ + //リクエストはsession.save()をする必要がありません。 + //後のテスト用に4つのリクエストを追加しています。 + Request aditionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10",011); + Request aditionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10",011); + editGroup.addRequests(aditionalrequest1); + editGroup.addRequests(aditionalrequest2); + session.update(editGroup); + } + session.getTransaction().commit(); + session.close(); + + /*リレーションを持ったリクエストの削除 (RIDを指定してリクエストを取得し、その後削除)*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + deleteRequest = (Request) session.load(Request.class, "005");//Banana cookie + //データの削除 + if(deleteRequest != null){ + session.delete(deleteRequest); + } + session.getTransaction().commit(); + session.close(); + + /*全件取得と出力*/ session = sessionFactory.openSession(); session.beginTransaction(); List result = session.createQuery( "from Event" ).list(); + System.out.println("イベントテーブル"); for ( Event event : (List) result ) { System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); } List groupResult = session.createQuery( "from Group" ).list(); + System.out.println("グループテーブル"); for ( Group group : (List) groupResult ) { System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName()); } List requestResult = session.createQuery( "from Request" ).list(); + System.out.println("リクエストテーブル"); for ( Request request : (List) requestResult ) { System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct()); } + + /*リレーションを持たせた分の出力*/ + //setは要素の順番に、あまり意味がありません。 + Group outGroup = session.load(Group.class, "111"); + //List list = new ArrayList(outGroup.getRequests()); + List list = outGroup.getRequestsList(); + System.out.println("グループID111のリクエスト一覧"); + for ( Request request : (List) list ) { + System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); + } + session.getTransaction().commit(); session.close(); } diff --git a/src/test/resources/Group.hbm.xml b/src/test/resources/Group.hbm.xml index 7a4a298..e60150b 100644 --- a/src/test/resources/Group.hbm.xml +++ b/src/test/resources/Group.hbm.xml @@ -17,6 +17,10 @@ + + + + diff --git a/src/test/resources/Request.hbm.xml b/src/test/resources/Request.hbm.xml index d41866b..60b2f63 100644 --- a/src/test/resources/Request.hbm.xml +++ b/src/test/resources/Request.hbm.xml @@ -12,7 +12,7 @@ - +