作業環境の変更
1 parent 00457bc commit 68ad8450c923417fe3845103dac527013d0d1b0d
Narumasa Kande authored on 25 Jun 2019
Showing 9 changed files
View
6
src/main/java/com/example/cosmos_serversb/CosmosServerSbApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class CosmosServerSbApplication {
public class
 
CosmosServerSbApplication {
 
public static void main(String[] args) {
SpringApplication.run(CosmosServerSbApplication.class, args);
}
View
16
src/main/java/com/example/cosmos_serversb/entities/Group.java
 
public class Group {
private String gId;
private String uri, name;
private ArrayList<User> members;
private Set<User> members;
//private ArrayList<Request> requests;
private Set<Request> requests;
 
public Group(){
 
public void addRequests(Request request){
requests.add(request);
}
/*
 
/*
public ArrayList<Request> getRequestsList(){
ArrayList<Request> list = new ArrayList<Request>(getRequests());
return list;
}
*/
 
*/
public void setMembers(Set<User> members) {
this.members = members;
}
 
public Set<User> getMembers() {
return members;
}
 
/*メンバー*/
//public ArrayList<User> getMembersList(){
// return null;
View
13
src/main/resources/Group.hbm.xml
<set name = "requests" cascade="all">
<key column = "GID" not-null="false"/>
<one-to-many class="Request"/>
</set>
 
<set name = "members"
table = "USER_GROUP"
lazy = "true"
inverse = "true"
cascade = "all">
<key column = "GID"/>
<many-to-many
class = "com.example.cosmos_serversb.entities.User"
column = "UID"
outer-join="auto"
/>
</set>
</class>
 
</hibernate-mapping>
View
9
src/test/java/hibernateTest/entities/Belong.java
public String getgId() {
return gId;
}
 
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
 
// @Override
// public int hashCode() {
// return super.hashCode();
// }
}
View
43
src/test/java/hibernateTest/entities/Group.java
//このクラスは仮です
package hibernateTest.entities;
 
import hibernateTest.models.Groups;
import hibernateTest.models.Users;
 
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
public class Group {
private String gId;
private String uri, name;
//private ArrayList<User> members;
private Set<User> members = new HashSet<>();//HashSetでいいのかな?
//private ArrayList<Request> requests;
private Set<Request> requests;
 
public Group(){
public Group(String gId, String uri, String name, String uId){
setgId(gId);
setUri(uri);
setName(name);
addMember(uId);
}
 
public String getgId(){
return gId;
public void addRequests(Request request){
requests.add(request);
}
 
public ArrayList<Request> getRequestsList(){
ArrayList<Request> list = new ArrayList<Request>(getRequests());
return list;
// public ArrayList<Request> getRequestsList(){
// ArrayList<Request> list = new ArrayList<Request>(getRequests());
// return list;
// }
 
public void setMembers(Set<User> members) {
this.members = members;
}
 
public Set<User> getMembers() {
return members;
}
 
public void addMember(String uId){
//test用
User user = new User(uId, uId, "http:test", "sa", "hogehoge");
//User user = Users.getInstance().getUserById(uId);
members.add(user);
}
 
 
// public List<Request> getRequests(){
View
170
src/test/java/hibernateTest/models/NativeApiIllustrationTest.java
import java.util.Date;
import java.util.List;
import java.util.Set;
 
import com.example.cosmos_serversb.resources.UsersRest;
import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;
import hibernateTest.entities.Event;
import hibernateTest.entities.Group;
import hibernateTest.entities.Request;
import hibernateTest.entities.User;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
session.save( new Event( "Our very first event!", new Date() ) );
session.save( new Event( "A follow up event", new Date() ) );
session.save( new Group("111", "http://test1", "family", "011" ) );
session.save( new Group("222", "http://test2", "friend", "022" ) );
Group newGroup = new Group("333", "http://test3", "school", "033" );
Group newGroup = new Group("333", "http://test3", "school", "033" );//インスタンスを引数に渡すこともできます
session.save(newGroup); //インスタンスを引数に渡すこともできます
session.save( new Group("444", "http://test4", "Laboratory", "044" ) );//userの追加を行う
session.save( new Request("001", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10", location));
session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10", location));
session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10", location));
session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10", location));//後にリクエストを削除
session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10", location));//後にチョコレートアイスに変更
session.getTransaction().commit();
session.close();
 
/*データ(レコード)の取得し削除。*/
Group editGroup = session.load(Group.class, "111");
if(editGroup != null){
//リクエストはsession.save()で保存する必要がありません。
//後のテスト用に3つのリクエストを追加しています。
Request additionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10", location);
Request additionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10", location);
Request additionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10", location);
editGroup.addRequests(additionalrequest1);
editGroup.addRequests(additionalrequest2);
editGroup.addRequests(additionalrequest3);
Request aditionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10", location);
Request aditionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10", location);
Request aditionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10", location);
editGroup.addRequests(aditionalrequest1);
editGroup.addRequests(aditionalrequest2);
editGroup.addRequests(aditionalrequest3);
session.update(editGroup);
}
session.getTransaction().commit();
session.close();
session.beginTransaction();
editGroup = session.load(Group.class, "222");
if(editGroup != null){
//リクエストはsession.save()で保存する必要がありません。
Request additionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10", location);
Request additionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10", location);
editGroup.addRequests(additionalrequest1);
editGroup.addRequests(additionalrequest2);
Request aditionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10", location);
Request aditionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10", location);
editGroup.addRequests(aditionalrequest1);
editGroup.addRequests(aditionalrequest2);
session.update(editGroup);
}
session.getTransaction().commit();
session.close();
 
session = sessionFactory.openSession();
session.beginTransaction();
editGroup = session.load(Group.class, "333");
if(editGroup != null){
//リクエストはsession.save()で保存する必要がありません。
Request additionalrequest1 = new Request("009", "http://test09", "1999.01.01", "033", "Hamburger", "1999.04.10", location);
Request additionalrequest2 = new Request("010", "http://test10", "1999.01.01", "033", "Potato", "1999.04.10", location);
Request additionalrequest3 = new Request("011", "http://test11", "1999.01.01", "033", "Smile", "1999.04.10", location);
editGroup.addRequests(additionalrequest1);
editGroup.addRequests(additionalrequest2);
editGroup.addRequests(additionalrequest3);
session.update(editGroup);
}
session.getTransaction().commit();
session.close();
 
 
/*リレーションを持ったリクエストの削除 (RIDを指定してリクエストを取得し、その後削除)*/
session = sessionFactory.openSession();
session.beginTransaction();
}
session.getTransaction().commit();
session.close();
 
 
/*中間テーブル(USER-GROUP)*/
/*ユーザの追加*/
session = sessionFactory.openSession();
session.beginTransaction();
editGroup = session.load(Group.class, "444");
if(editGroup != null){
editGroup.addMember("055");
editGroup.addMember("066");//後で削除します。
editGroup.addMember("077");
 
}
session.getTransaction().commit();
session.close();
 
/*ユーザの削除*/
session = sessionFactory.openSession();
session.beginTransaction();
User deleteUser = session.load(User.class, "066");//参照整合性制約でエラー
if(deleteUser != null){
session.delete(deleteUser);
}
session.getTransaction().commit();
session.close();
 
 
/*出力*/
/*全件取得と出力*/
session = sessionFactory.openSession();
session.beginTransaction();
//queryStringには警告が出ます。
System.out.println("イベントテーブル");
for ( Event event : (List<Event>) result ) {
System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
}
 
List groupResult = session.createQuery( "from Group" ).list();
System.out.println("グループテーブル");
for ( Group group : (List<Group>) groupResult ) {
System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName());
Set<User> members = group.getMembers();
System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName() + " member: ");
for( User user : (Set<User>) members){
System.out.println(user.getuId() + " ");
}
System.out.println();
}
 
List requestResult = session.createQuery( "from Request" ).list();
System.out.println("リクエストテーブル");
for ( Request request : (List<Request>) requestResult ) {
System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct());
}
 
List userResult = session.createQuery( "from User" ).list();
System.out.println("ユーザテーブル");
for ( User user : (List<User>) userResult ) {
System.out.println( "User (" + user.getuId() + ") : " + user.getUri());
}
 
/*リレーションを持たせた分の出力*/
//Setは要素の順番に意味がないため、出力の順番はrId順ではありません。
Group outGroup = session.load(Group.class, "111");
List<Request> list = outGroup.getRequestsList();//Listとして取り出す。
Set<Request> set = outGroup.getRequests();//Listとして取り出す。
System.out.println("グループID111のリクエスト一覧");
for ( Request request : (List<Request>) list ) {
for ( Request request : (Set<Request>) set ) {
System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct());
}
outGroup = session.load(Group.class, "222");
Set<Request> set = outGroup.getRequests();//Setのまま取り出す。
set = outGroup.getRequests();//Setのまま取り出す。
System.out.println("グループID222のリクエスト一覧");
for ( Request request : (Set<Request>) set ) {
System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct());
}
session.getTransaction().commit();
session.close();
 
/*リクエストを持ったグループの削除*/
session = sessionFactory.openSession();
session.beginTransaction();
//load()メソッドを用いて取得する方法。
Group deleteGroup = (Group) session.load(Group.class, "333");
//データの削除
if(deleteGroup != null){
session.delete(deleteGroup);
}
session.getTransaction().commit();
session.close();
 
session = sessionFactory.openSession();
session.beginTransaction();
List requestResult = session.createQuery( "from Request" ).list();
System.out.println("グループ(ID:333)を削除後のリクエストテーブル");
for ( Request request : (List<Request>) requestResult ) {
System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct());
}
System.out.println("ハンバーガー,ポテト,スマイルも消えています");
session.getTransaction().commit();
session.close();
 
 
session.getTransaction().commit();
session.close();
}
 
 
}
View
24
src/test/resources/Belong.hbm.xml 100644 → 0
<?xml version="1.0"?>
 
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping package="hibernateTest.entities">
 
<class name="Belong" table="BELONGS">
<composite-id>
<key-property name="uId" column="UID"></key-property>
<key-property name="gId" column="GID"></key-property>
</composite-id>
 
</class>
 
</hibernate-mapping>
View
11
src/test/resources/Group.hbm.xml
<set name = "requests" cascade="all">
<key column = "GID"/>
<one-to-many class="Request"/>
</set>
<set name = "members"
table = "USER_GROUP"
lazy = "true"
inverse = "false"
cascade = "all">
<key column = "GID"/>
<one-to-many
class = "hibernateTest.entities.User"
/>
</set>
 
</class>
 
</hibernate-mapping>
View
1
■■■■
src/test/resources/hibernate.cfg.xml
<mapping resource="Event.hbm.xml"/>
<mapping resource="User.hbm.xml"/>
<mapping resource="Group.hbm.xml"/>
<mapping resource="Request.hbm.xml"/>
<mapping resource="Belong.hbm.xml"/>
 
</session-factory>
 
</hibernate-configuration>