![Java éçºè
ã®è·ã®é¢æ¥ã§ã®è³ªåãšåçã調æ»ããŸãã ããŒã6-1](https://cdn.codegym.cc/images/article/525d3d43-4c36-47aa-a4e9-5c67b73b6cd9/800.jpeg)
![Java éçºè
ã®è·ã®é¢æ¥ã§ã®è³ªåãšåçã調æ»ããŸãã ããŒã6-2](https://cdn.codegym.cc/images/article/eb118476-4ec0-40a7-b64b-98a09a5828a4/512.jpeg)
ã©ã€ãã©ãªãšæšæº
52. äŒæ¢ç¶æ ãšã¯äœã§ãã? JPA ãš Hibernate ã®éãã¯äœã§ãã?
ãã®è³ªåã«çããã«ã¯ããŸã JPA ãšã¯äœãªã®ããç解ããå¿ èŠããããšæããŸããããã¯ãåçŽãª Java ãªããžã§ã¯ãã®ãªããžã§ã¯ã ãªã¬ãŒã·ã§ãã« ãããã³ã°ãèšè¿°ãããã®ãããªãªããžã§ã¯ããæ ŒçŽãååŸãæäœããããã® API ãæäŸããä»æ§ã§ããã€ãŸãããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ (DB) ã¯ãçžäºæ¥ç¶ãããããŒãã«ã®ã»ãããšããŠè¡šãããŸããJPA ã¯ããªããžã§ã¯ãããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ãšå¯Ÿè©±ããæ¹æ³ãèšè¿°ãããåºãæ¡çšãããŠããæšæºã§ããã芧ã®ãšãããJPA ã¯æœè±¡çã§ç¡åœ¢ã®ãã®ã§ããããã¯ã¢ã€ãã¢ãã®ãã®ãã¢ãããŒãã®ãããªãã®ã§ãã![Java éçºè
ã®è·ã®é¢æ¥ã§ã®è³ªåãšåçã調æ»ããŸãã ããŒã6-3](https://cdn.codegym.cc/images/article/dca6e70e-c368-4d1e-9bb3-807f4052efc3/512.jpeg)
53. ã«ã¹ã±ãŒããšã¯äœã§ãã? Hibernate ã§ã¯ã©ã®ããã«äœ¿çšãããŸãã?
åã«è¿°ã¹ãããã«ãHibernate ã§ã®éä¿¡ã¯ãšã³ãã£ãã£ãšåŒã°ããããŒã¿ ãªããžã§ã¯ããéããŠè¡ãããŸãããããã®ãšã³ãã£ãã£ã¯ããŒã¿ããŒã¹å ã®ç¹å®ã®ããŒãã«ãè¡šããèŠããŠããããã«ãJava ã¯ã©ã¹ã«ã¯ä»ã®ã¯ã©ã¹ãžã®åç §ãå«ããããšãã§ããŸãããããã®é¢ä¿ã¯ããŒã¿ããŒã¹ã«ãåæ ãããŸããååãšããŠããããã¯å€éšã㌠(OneToOneãOneToManyãManyToOne é¢ä¿ã®å Žå) ãŸãã¯äžéããŒãã« (ManyToMany é¢ä¿ã®å Žå) ã®ããããã§ãããšã³ãã£ãã£ã«ä»ã®é¢é£ãšã³ãã£ãã£ãžã®åç §ãããå Žåãé¢ä¿ã®ã¿ã€ãã瀺ã泚éããããã®åç §ã®äžã«é 眮ãããŸã: @OneToOneã@OneToManyã@ManyToOneã@ManyToManyã泚éã®ã«ã¹ã±ãŒã ããããã£ã§ããã®é¢ä¿ã®ã«ã¹ã±ãŒãã®ã¿ã€ããæå®ã§ããŸããJPA ã«ã¯ããšã³ãã£ãã£ãšå¯Ÿè©±ããããã®ç¹å®ã®ã¡ãœãã (æ°žç¶åãä¿åãããŒãžãªã©) ããããŸããã«ã¹ã±ãŒã ã¿ã€ãã¯ãé¢é£ããããŒã¿ãã©ã®ããã«åäœãããã瀺ãããã«äœ¿çšãããŸãããããã®ã¡ãœããã¯ã¿ãŒã²ãã ãšã³ãã£ãã£ã§äœ¿çšãããŸããã§ã¯ãã«ã¹ã±ãŒãæŠç¥ (ã«ã¹ã±ãŒã ã¿ã€ã) ãšã¯äœã§ãããã? JPA æšæºã§ã¯ã次㮠6 ã€ã®ã«ã¹ã±ãŒã ã¿ã€ãã®äœ¿çšãèŠå®ãããŠããŸãã-
PERSIST â ä¿åæäœã¯ã«ã¹ã±ãŒãã§å®è¡ãããŸã ( save()ã¡ãœãããšpersist()ã¡ãœããã®å Žå)ãã€ãŸããä»ã®ãšã³ãã£ãã£ã«é¢é£ä»ããããŠãããšã³ãã£ãã£ãä¿åãããšããããã®ãšã³ãã£ãã£ãããŒã¿ããŒã¹ã«ä¿åãããŸã (ãŸã ååšããŠããªãå Žå)ã
-
MERGE â æŽæ°æäœã¯ã«ã¹ã±ãŒãã§çºçããŸã ( merge()ã¡ãœããã®å Žå)
-
REMOVE â åé€æäœã¯ã«ã¹ã±ãŒãã§å®è¡ãããŸã ( remove()ã¡ãœãã)
-
ALL â äžåºŠã« 3 ã€ã®ã«ã¹ã±ãŒãæäœãå«ãŸããŸã â PERSIST â MERGE â REMOVE
-
DETACH â é¢é£ãšã³ãã£ãã£ã¯ã»ãã·ã§ã³ ( detach()ã¡ãœãã) ã«ãã£ãŠç®¡çãããŸãããã€ãŸããé¢é£ãšã³ãã£ãã£ã®ããŒã¿ãå€æŽãããŠããããŒã¿ããŒã¹å ã®ããŒã¿ã¯èªåçã«æŽæ°ããããæ°žç¶çãªããŒã¿ããåé¢ãããããŒã¿ã«å€æãããŸã (ã€ãŸãããšã³ãã£ãã£ã¯ JPA ã«ãã£ãŠç®¡çãããŸãã)ã
-
REFRESH â ãšã³ãã£ãã£ãããŒã¿ããŒã¹ã®ããŒã¿ã§æŽæ°ããããã³ã« ( refresh() â åãé¢ããããªããžã§ã¯ããæŽæ°ããŸã)ããã®é¢é£ãšã³ãã£ãã£ãæŽæ°ãããŸããããšãã°ãããŒã¿ããŒã¹ããååŸããããŒã¿ãäœããã®çç±ã§å€æŽãããããå ã®å€ã埩å ããããšããŸãããã®å Žåããã®æäœã䟿å©ã§ãã
![Java éçºè
ã®è·ã®é¢æ¥ã§ã®è³ªåãšåçã調æ»ããŸãã ããŒã6 - 4](https://cdn.codegym.cc/images/article/9516ab6c-b3ca-4cf0-a5f0-27a5ff4476c4/512.jpeg)
-
REPLICATE â è€æ°ã®ããŒã¿ ãœãŒã¹ããããããŒã¿ãåæããå¿ èŠãããå Žåã«äœ¿çšãããŸã (Hibernate ã®ã¬ããªã±ãŒã ã¡ãœãã)ããã¹ãŠã®ãšã³ãã£ãã£ã¯ãåé¡ãªãäœæã§ããããã«ããããã« (åããšã³ãã£ãã£ãããŒã¿ããŒã¹ããšã«ç°ãªã ID ãæããªãããã«ããããã«) èå¥å (id) ãæã£ãŠããå¿ èŠããããŸãã
-
SAVE_UPDATE â ã«ã¹ã±ãŒãä¿å/åé€ (Hibernate ã®saveOrUpdateã¡ãœããã®å Žå)
-
LOCK â DETACHEDæäœã®å察: åãé¢ããããšã³ãã£ãã£ãæ°žç¶ç¶æ ã«æ»ããŸããã€ãŸããçŸåšã®ã»ãã·ã§ã³ã¯ãšã³ãã£ãã£ãå床远跡ããŸãã
54. Entityã¯ã©ã¹ã¯æœè±¡ã¯ã©ã¹ã«ã§ããŸãã?
JPA ä»æ§ ã®2.1 ãšã³ãã£ã㣠ã¯ã©ã¹ã«ãããšããæœè±¡ã¯ã©ã¹ãšå ·è±¡ã¯ã©ã¹ã®äž¡æ¹ããšã³ãã£ãã£ã«ãªãããšãã§ããŸãããã€ãŸããçãã¯ãã¯ããã§ããæœè±¡ã¯ã©ã¹ã¯ãšã³ãã£ãã£ã«ãªãããšãã§ãã @Entity ã¢ãããŒã·ã§ã³ã§ããŒã¯ã§ããŸãã55. ãšã³ãã£ãã£ãããŒãžã£ãŒãšã¯äœã§ãã? ããã¯äœã®è²¬ä»»ãããã®ã§ããããïŒ
ãŸãæåã«ã EntityManager ã¯JPAã®éèŠãªã³ã³ããŒãã³ãã§ããããšã«æ³šæããŠãã ãããããã¯ããšã³ãã£ãã£ãšããŒã¿ããŒã¹ã®å¯Ÿè©±ã«äœ¿çšãããŸããäžè¬ã«ããšã³ãã£ãã£ãšããŒã¿ããŒã¹ã®ããåãã®ããã®ã¡ãœãã (æ°žç¶åãããŒãžãåé€ããã¿ãã) ã¯ãšã³ãã£ãã£äžã§åŒã³åºãããŸãããã ãããã®ã³ã³ããŒãã³ãã¯éåžžãã¢ããªã±ãŒã·ã§ã³å šäœã®ã·ã³ã°ã«ãã³ã§ã¯ãªãããšã«ã泚æããŠãã ãããå€ãã®å Žåãããã¯è»œéã§ããã EntityManagerFactoryã䜿çšã㊠1 ã€ãåé€ãããæ°ãããã®ãäœæãããŸããEntityManagerFactory ãDataSourceã«çžåœããJDBCãšåæ§ã®å ŽåãEntityManagerã¯Connectionã«çžåœããŸããåã«ãæ°žç¶ãšã³ãã£ãã£ã¯çŸåšã®æ¥ç¶ã«ãã£ãŠç®¡çããããšã³ãã£ãã£ã§ãããšè¿°ã¹ãŸããããã®ãšã³ãã£ãã£ã¯ãçŸåšã®æ¥ç¶ã«å¯æ¥ã«é¢é£ããEntityManagerãšããã©ã³ã¶ã¯ã·ã§ã³ã®éå§/çµäºãæ åœããTransactionManagerã«ãã£ãŠç®¡çãããŸãã以äžã®å³ã§ã¯ããšã³ãã£ãã£ã®ã©ã€ã ãµã€ã¯ã«ã確èªã§ããŸãã EntityManager ã¯ã管ç察象ã¹ããŒãžã«ãããšã³ãã£ã㣠( EntityManagerãšã®æ¥ç¶ãããããæ°žç¶çã§ãããšã) ã«ãšã³ãã£ãã£ã管çããŸããã€ãŸããæ°ãããã®ã§ã¯ãªããåé€ããããã®ã§ããããŸããããšã³ãã£ãã£ãæ°èŠãŸãã¯åé€ãããå Žåã EntityManager ã¯ãšã³ãã£ãã£ã管çããªãããããšã³ãã£ãã£ãåãé¢ãããŠãããšèšããŸããEntityManagerã«ã¯ããŸããŸãªæŠç¥ããããŸããã¢ããªã±ãŒã·ã§ã³å šäœã«å¯Ÿã㊠EntityManager ã·ã³ã°ã«ãã³ãäœæããããšããæ¥ç¶ããšã«æ¯åæ°ãã EntityManager ã·ã³ã°ã«ãã³ãäœæããããšãã§ããŸããSpring ã䜿çšããŠããå ŽåãEntityManager ã®äœæ/åé€ã¯å éšã§èªåçã«ç®¡çãããŸã (ãã ããèªåã§ã«ã¹ã¿ãã€ãºã§ããªããšããæå³ã§ã¯ãããŸãã ^^)ã1 ã€ä»¥äžã® EntityManager ãæ°žç¶ã³ã³ããã¹ãã圢æããããšã«èšåããå¿ èŠããããŸããæ°žç¶ã³ã³ããã¹ãã¯ããšã³ãã£ãã£ã®ã€ã³ã¹ã¿ã³ã¹ãããŒã¿ããŒã¹å ã®åæ§ã®ãšã³ãã£ãã£ãšåæãããç°å¢ã§ã (åè¿°ããããã«ãããã¯æ°žç¶ãšã³ãã£ãã£ã«å¯ŸããŠã®ã¿æ©èœããŸã)ãJPA (ããã匷ããå§ãããŸã)ãæ·±ãæãäžãããšããã®æŠå¿µã«é »ç¹ã«ééããã§ãããã![Java éçºè
ã®è·ã®é¢æ¥ã§ã®è³ªåãšåçã調æ»ããŸãã ããŒã6 - 5](https://cdn.codegym.cc/images/article/ceb2119f-929d-45a4-96ba-aad9800fcd79/800.jpeg)
56. Assertã¯ã©ã¹ãšã¯äœã§ãã? ãªã䜿ãããã®ã§ããããïŒ
JPAã§ãã®ãããªã¯ã©ã¹ã«ã€ããŠèããããšããªãã®ã§ããã®è³ªåã¯åäœãã¹ãã«äœ¿çšããã JUnit ã©ã€ãã©ãªã«ããã¯ã©ã¹ãåç §ããŠãããšä»®å®ããŸãããã®ã©ã€ãã©ãªã§ã¯ãAssertã¯ã©ã¹ã䜿çšããŠã³ãŒãã®å®è¡çµæã確èªããŸã (ããã§ã®Assert ã¯ãã³ãŒãå ã®ç¹å®ã®å Žæã«ç¹å®ã®ç¶æ /ããŒã¿ããããšããã¢ãµãŒã·ã§ã³ãæå³ããŸã)ãããšãã°ãç«ãäœæããã¡ãœããããã¹ãããŠãããšããŸããã¡ãœãããå®è¡ãããšã次ã®ãããªçµæãåŸãããŸããCat resultOfTest = createCat();
ãã ãããããæ£ããäœæãããããšã確èªããå¿
èŠããããŸããã? ãããã£ãŠã createCat()ã¡ãœããããååŸãã cat ã«å«ãŸãããšäºæ³ããããã©ã¡ãŒã¿ãæ£ç¢ºã«äœ¿çšããŠãç¹å®ã® cat ( expectedCat ) ãæåã§äœæããŸãã次ã«ã Assertã¯ã©ã¹ã䜿çšããŠçµæã確èªããŸãã
Assert.assertEquals(resultOfTest, expectedCat);
ç«ãç°ãªãå Žåã¯ãæåŸ
ããçµæãåŸãããªãã£ãããšã瀺ãAssertionErrorãã¹ããŒãããŸããAssertã¯ã©ã¹ã«ã¯ãæåŸ
ãããçµæãæ€èšŒããã®ã«åœ¹ç«ã€ããŸããŸãªæäœãã«ããŒããããŸããŸãªã¡ãœãããå«ãŸããŠããŸãããã®ãã¡ã®ããã€ãã次ã«ç€ºããŸãã
-
assertTrue(<boolean>) â åŒæ°ãšããŠæž¡ãããå€ã¯trueã§ããããšãæåŸ ãããŸã
-
assertFalse(<boolean>) â åŒæ°ãšããŠæž¡ãããå€ã¯falseã§ããããšãæåŸ ãããŸã
-
assertNotEquals(<object1>, <object2>) â åŒæ°ãšããŠæž¡ããããªããžã§ã¯ãã¯ãequals ( false )ã䜿çšããŠæ¯èŒããå Žåã«ç°ãªã£ãŠããå¿ èŠããããŸãã
-
assertThrows(<ClassNameOfException>.class, <ExceptionObject>) â 2 çªç®ã®åŒæ°ã¯ãæåã®åŒæ°ã«ãã£ãŠã¹ããŒãããäŸå€ã§ããããšãæåŸ ãããŸã (ã€ãŸãã2 çªç®ã®åŒæ°ã¯éåžžãå¿ èŠãªã¿ã€ãã®äŸå€ãã¹ããŒããã¡ãœããåŒã³åºãã§ã)ã
匊
57. Javaã®Stringã¯ã©ã¹ã«ã€ããŠèª¬æãã
String ã¯ãæååå€ (æåã®ã·ãŒã±ã³ã¹) ã®ä¿åãšæäœãæ åœããæšæº Java ã¯ã©ã¹ã§ããããã¯äžå€ã¯ã©ã¹ã§ã (äžå€ã«ã€ããŠã¯ä»¥åãã㧠æžããŸãã)ãã€ãŸãããã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã®ããŒã¿ã¯ãäœæåŸã«å€æŽã§ããŸãããStringBuilderã¯ã©ã¹ãšStringBufferã¯ã©ã¹ã¯æ¬è³ªçã«åäžã§ããããšã«ããã«æ³šæããŠãã ãããå¯äžã®éãã¯ããã®ãã¡ã® 1 ã€ããã«ãã¹ã¬ããç°å¢ ( StringBuffer ) ã§ã®äœ¿çšãç®çãšããŠãããšããããšã§ãããããã®ã¯ã©ã¹ã¯Stringã«äŒŒãŠããŸãããå€æŽå¯èœã§ãããšããç¹ã§ç°ãªããŸããäœæåŸã§ããæ°ãããªããžã§ã¯ããäœæããã«ãããããè¡šãæååãå€æŽã§ããŸãããããã®ã¡ãœããã¯æšæºã®Stringã¡ãœãããšã¯ç°ãªããæååæäœçšã«èšèšãããŠããŸã (ããããã«ããŒãšåŒã¶ã®ã«ã¯çç±ããããŸã)ã58. String ãªããžã§ã¯ããäœæããã«ã¯ã©ã®ãããªæ¹æ³ããããŸãã? ã©ãã§äœæãããŠããŸãã?
æååãäœæããæãäžè¬çãªæ¹æ³ã¯ãå¿ èŠãªå€ãäºéåŒçšç¬Šã§å²ãã§åçŽã«æå®ããããšã§ããString str = "Hello World!";
new ã 䜿çšããŠæ瀺çã«è¡ãããšãã§ããŸãã
String str = new String("Hello World!");
æåã®é
åããæååãäœæããããšãã§ããŸãã
char[] charArr = {'H','e','l','l','o',' ', 'W','o','r','l','d','!'};
String str = new String(charArr);
ãããè¡ãã«ã¯ããªããžã§ã¯ãã® toStringã¡ãœãããåŒã³åºããŸãã
String str = someObject.toString();
ããã¯ãæååãè¿ãä»ã®ã¡ãœãããåŒã³åºãããšã§å®è¡ã§ããŸããäŸïŒ
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
æååãäœæããã«ã¯éåžžã«å€ãã®æ¹æ³ãããããšãããããŸãããStringãªããžã§ã¯ããäœæããããšãããã¯String poolã«ä¿åãããŸããããã«ã€ããŠã¯ã以äžã®è³ªåã®ããããã§è©³ãã説æããŸãã
59. 2 ã€ã® Java æååãã©ã®ããã«æ¯èŒããã©ã®ããã«äžŠã¹æ¿ããŸãã?
Java ã§ã¯ãæ¯èŒãå®è¡ããããã« 2 ã€ã®çå· ( == ) ã䜿çšããŸããint ã®ãããªåçŽãªå€ãæ¯èŒããå¿ èŠãããå Žåã¯ãããã䜿çšããŸãããã ãããã®æ¹æ³ã¯æ¬æ Œçãªãªããžã§ã¯ãã®æ¯èŒã«ã¯é©ããŠããŸãããåç §ã®ã¿ãæ¯èŒããŸããã€ãŸããåç §ãåããªããžã§ã¯ããæããŠãããã©ãããæ¯èŒããŸããããã¯ã ==ã䜿çšããŠåããã£ãŒã«ãå€ãæ〠2 ã€ã®ãªããžã§ã¯ããæ¯èŒãããšfalseãè¿ãããããšãæå³ããŸãããã£ãŒã«ãã®å€ã¯åãã§ããããªããžã§ã¯ãèªäœã¯ã¡ã¢ãªå ã®ç°ãªãå Žæãå ããŸãã æååãªããžã§ã¯ãã¯ãèŠããã®åçŽãã«ãããããããäŸç¶ãšããŠãªããžã§ã¯ãã§ãã==ã䜿çšããŠããããæ¯èŒããããšãé©åã§ã¯ãããŸãã (æååããŒã«ãååšããã«ãããããã)ãé©åãªè§£æ±ºçã¯ãObjectã¯ã©ã¹ã®æšæºã®çããã¡ãœããã§ãããããæ£ããæ©èœãããã«ã¯ãªãŒããŒã©ã€ãããå¿ èŠããããŸã (ããã©ã«ãã§ã¯ãæ¯èŒã«==ã䜿çšããŸã)ãStringã¯ã©ã¹ã¯ããããªãŒããŒã©ã€ãããã®ã§ããã®å®è£ ã䜿çšããã ãã§ããString firstStr = "Hello World!";
String secondStr = "Hello World!";
boolean isEquals = firstStr.equals(secondStr);
![Java éçºè
ã®è·ã®é¢æ¥ã§ã®è³ªåãšåçã調æ»ããŸãã ããŒã6 - 6](https://cdn.codegym.cc/images/article/aa886bff-7bf8-4cf2-b27e-9c62dd442c0e/512.jpeg)
TreeSet<String> sortedSet = new TreeSet<>();
sortedSet.add("B");
sortedSet.add("C");
sortedSet.add("A");
sortedSet.forEach(System.out::println);
ã³ã³ãœãŒã«åºå:
60. æååãæåã«å€æããã¢ã«ãŽãªãºã ãæäŸããŸãã察å¿ããã³ãŒããæžããŸã
åã«è¿°ã¹ãããã«ãStringãªããžã§ã¯ãã«ã¯ããŸããŸãªäŸ¿å©ãªã¡ãœããããããããããŸãããã®ãã¡ã® 1 ã€ã¯toCharArrayã§ãããã®ã¡ãœããã¯ãæååãæåé åã«å€æããŸããString str = "Hello world";
char[] charArr = str.toCharArray();
次ã«ãã€ã³ããã¯ã¹ã«ãã£ãŠåç
§ã§ããæåã®é
åããããŸãã
char firstChar = charArr[0]; // H
61. æååããã€ãé åã«å€æããããéã«å€æãããããã«ã¯ã©ãããã°ããã§ãã? 察å¿ããã³ãŒããæžããŸã
Stringã¯ã©ã¹ã«ã¯getBytesã¡ãœããããããŸããããã¯toCharArrayã¡ãœããã«äŒŒãŠãããæååããã€ãé åãšããŠè¿ããŸããString str = "Hello world";
byte[] byteArr = str.getBytes();
byte firstChar = byteArr[6]; // 119
ä»æ¥ã®ã¬ãã¥ãŒã®è«ççãªçµè«ã«éããŸãããèªãã§ãããŠããããšãïŒ
GO TO FULL VERSION