inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

어플리케이션 계층이 예제에 있는 것인지 궁금합니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요. 도메인 주도 모델을 공부하면서 강의를 복습하고 있습니다. 비즈니스 로직이 Entity 객체에 들어가는 이유 등은 조금씩 이해가 가고 있는 중입니다. 그런데 제가 경험이 없다보니 이론서와 예제를 비교하다 보니까 다른 점이 몇 가지 있어서 실제로는 반드시 이론대로 사용하는 것은 아닌가? 라는 생각도 들고 학습을 위해서 간단히 만드신 건가 잘 모르겠어서 질문드려봅니다. 도메인 주도 설계 아키텍쳐를 보면 1 프레젠테이션 계층 2 애플리케이션 계층 3 도메인 계층 4 인프라스트럭처 계층 이렇게 나누어진다고 하는데요. 여기서 1 프레젠테이션 계층이 MVC이고 영상에서 나오는 controller domain service는 3 도메인 계층으로 보입니다. 그런데 2 애플리케이션 계층은 보이지 않고 애플리케이션 계층이 와야 할 자리에 도메인 계층이 있는 것처럼 보입니다. 예를 들면 도메인 객체인 Entity나 Repository가 Controller에서 사용되고 있습니다. 이론서를 보면 컨트롤러에서는 도메인 계층의 구현을 알지 않는 것이 좋으며, 모든 도메인 계층에 대한 호출은 어플리케이션 계층 안에서(ex entityApplicationService Class 안에서) 이루어지는게 좋다고 하더라고요. 실무에서도 예제처럼 어플리케이션 계층을 생략하고 할 때가 많나요? 아니면 강의에서는 학습용으로 생략이 된 것인지 제가 무언가 간과하고 있는 부분이 있는지 궁금해서 이렇게 질문드리게 되었습니다.

  • spring
  • JPA
  • spring-boot
  • java
컴퓨터공부하자 댓글 1 좋아요 0 조회수 218

연관관계

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

1 : N 관계에서 19:35 를보시면 만약에 1 (Team)쪽을 주인으로 정하면 Team의 members의 값을 바꾸면 다른테이블에 update 쿼리가 나간다고 말씀해주셨습니다. 근데 햇갈리는건 N 쪽을 주인으로 정해도 member.getTeam().setName("test"); 이렇게 하면 update 쿼리가 Member 테이블이 아닌 Team 테이블에서 나갑니다 같은 현상 아닌가요 ? // 저장 Team team = new Team() ; team.setName( "TeamA" ) ; em.persist(team) ; Member member = new Member() ; member.setUsername( "member1" ) ; member.setTeam(team) ; member.getTeam().setName( "test" ) ; em.persist(member) ; em.persist(team) ; em.flush() ;

  • java
  • JPA
기팝 댓글 1 좋아요 0 조회수 350

테이블 자동 생성이 안됩니

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

예전에 jpa 활용을 듣고 진행했을 때는 실행 시 h2에 엔티티들이 잘 들어갔고 그 때 작성했던 jpashop은 여전히 잘 동작하는데 이번에 다시 새로운 프로젝트를 만들고 똑같은 설정으로 다시 하는데 h2에 테이블이 자동생성되지 않습니다 이유를 잘 모르겠습니다ㅠㅠ 전에 했던 다른 프로젝트로 db 파일에 접근하는건 잘 되는데 이 프로젝트에서만 안되는걸보니 이 프로젝트에서 뭔가 잘못된게 있는것 같습니다 application.yml spring: datasource: url: jdbc:h2:tcp://localhost/~/sss username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: true logging.level: org.hibernate.SQL: debug Member 엔티티 package com.sss.domain; import lombok.Data; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity @Data public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; } "C:\Program Files\Java\jdk-11.0.11\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=52190:C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\bin" -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath C:\springProjects\subscriptionsharing\out\production\classes;C:\springProjects\subscriptionsharing\out\production\resources;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.18.22\9c08ea24c6eb714e2d6170e8122c069a0ba9aacf\lombok-1.18.22.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-jpa\2.5.6\8d7fe99c33e09390316749614d9795d80b49207b\spring-boot-starter-data-jpa-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-validation\2.5.6\89f34956247743c97e16fa0dd7176743fc8dea08\spring-boot-starter-validation-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\2.5.6\46b479490170914f7477b96a21241183b181c24d\spring-boot-starter-web-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-aop\2.5.6\c5db1260ecf447f55419f1a17da75a42f211aca3\spring-boot-starter-aop-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-jdbc\2.5.6\cf01e787378c2d30b695f0c9f76fb48a6b490984\spring-boot-starter-jdbc-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\jakarta.transaction\jakarta.transaction-api\1.3.3\c4179d48720a1e87202115fbed6089bdc4195405\jakarta.transaction-api-1.3.3.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\jakarta.persistence\jakarta.persistence-api\2.2.3\8f6ea5daedc614f07a3654a455660145286f024e\jakarta.persistence-api-2.2.3.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.hibernate\hibernate-core\5.4.32.Final\99a5e10bf455337014c190e141ec631e9ff71663\hibernate-core-5.4.32.Final.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-jpa\2.5.6\8e0ec2f54f3fcda49dfb3123f3a40f34b55df92a\spring-data-jpa-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aspects\5.3.12\3cccc3052c6973c059eb2be7c4baf0b9558d49b7\spring-aspects-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\2.5.6\d5d1fada1afe9a808abf48da7066a993cf679aa\spring-boot-starter-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\9.0.54\9edb062d38d0fd8a165289f44b28b3b0e0e11ed7\tomcat-embed-el-9.0.54.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.hibernate.validator\hibernate-validator\6.2.0.Final\d6b0760dfffbf379cedd02f715ff4c9a2e215921\hibernate-validator-6.2.0.Final.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\2.5.6\6ef5a7087e18ed4f3736c8752440ecd489c36a4d\spring-boot-starter-json-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\2.5.6\6d1a04a727d9d09b99207864ceb0a4567e53730a\spring-boot-starter-tomcat-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\5.3.12\3d92ad6c28bfa5923183f328f5bfa1e39ec32714\spring-webmvc-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\5.3.12\78991a50d17da49bddc4987a2cc8b83d46c402a7\spring-web-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\5.3.12\882db41939109e96f4c78cd5c0931cc4aebc3d58\spring-aop-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.aspectj\aspectjweaver\1.9.7\158f5c255cd3e4408e795b79f7c3fbae9b53b7ca\aspectjweaver-1.9.7.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.zaxxer\HikariCP\4.0.3\107cbdf0db6780a065f895ae9d8fbf3bb0e1c21f\HikariCP-4.0.3.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jdbc\5.3.12\957d6ddc80fbf52d965e6af90ddd0dccfed42d7d\spring-jdbc-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.hibernate.common\hibernate-commons-annotations\5.1.2.Final\e59ffdbc6ad09eeb33507b39ffcf287679a498c8\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.jboss.logging\jboss-logging\3.4.2.Final\e517b8a93dd9962ed5481345e4d262fdd47c4217\jboss-logging-3.4.2.Final.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.javassist\javassist\3.27.0-GA\f63e6aa899e15eca8fdaa402a79af4c417252213\javassist-3.27.0-GA.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy\1.10.22\ef45d7e2cd1c600d279704f492ed5ce2ceb6cdb5\byte-buddy-1.10.22.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\antlr\antlr\2.7.7\83cd2cd674a217ade95a4bb83a8a14f351f48bd0\antlr-2.7.7.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.jboss\jandex\2.2.3.Final\d3865101f0666b63586683bd811d754517f331ab\jandex-2.2.3.Final.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml\classmate\1.5.1\3fe0bed568c62df5e89f4f174c101eab25345b6c\classmate-1.5.1.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.dom4j\dom4j\2.1.3\a75914155a9f5808963170ec20653668a2ffd2fd\dom4j-2.1.3.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-runtime\2.3.5\a169a961a2bb9ac69517ec1005e451becf5cdfab\jaxb-runtime-2.3.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\5.3.12\d5f5f044e05109b7f3337ea2cf692fd62d1ecbb6\spring-context-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-orm\5.3.12\2881f9e71889b35fa3785bf67706a201cea93004\spring-orm-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-commons\2.5.6\15a2384f4eaf7fee512fb295174f6c0fb6c55ee1\spring-data-commons-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-tx\5.3.12\7f2e61a22682baa22ed5bef0724a4386c41477cb\spring-tx-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\5.3.12\caaa1d489bce88d6aa01ddd255ad5046acf8f282\spring-beans-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\5.3.12\662e6536968246af9baa84fbac2d3eb56a04fda9\spring-core-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.32\cdcff33940d9f2de763bc41ea05a0be5941176c3\slf4j-api-1.7.32.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\2.5.6\b9f4016180c5242530da465561ff25c7cac14bf3\spring-boot-autoconfigure-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\2.5.6\d8c6b97fd3182fb6d7d06ebf710cd9ccabc83b89\spring-boot-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\2.5.6\a900356a11b1a41f4277136f1d13ce7a13f43b3c\spring-boot-starter-logging-2.5.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\1.3.5\59eb84ee0d616332ff44aba065f3888cf002cd2d\jakarta.annotation-api-1.3.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.28\7cae037c3014350c923776548e71c9feb7a69259\snakeyaml-1.28.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\jakarta.validation\jakarta.validation-api\2.0.2\5eacc6522521f7eacb081f95cee1e231648461e7\jakarta.validation-api-2.0.2.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.12.5\a0a9870b681a72789c5c6bdc380e45ab719c6aa3\jackson-datatype-jsr310-2.12.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.12.5\2c85c2036d0851425a260c01eb5f7ddbed1eeb00\jackson-module-parameter-names-2.12.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.12.5\6b2f79547d217ad50dfc5b57af7444a3aa583b43\jackson-datatype-jdk8-2.12.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.12.5\b064cf057f23d3d35390328c5030847efeffedde\jackson-databind-2.12.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\9.0.54\ae018906cecb818a8c6f2316d7b0793beadf6609\tomcat-embed-websocket-9.0.54.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\9.0.54\34322c731b2394ea13681cfae0be9cd72f46f88d\tomcat-embed-core-9.0.54.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\5.3.12\50c82e995b3b8e20a3f313b4356237db5a26e14a\spring-expression-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\jakarta.xml.bind\jakarta.xml.bind-api\2.3.3\48e3b9cfc10752fba3521d6511f4165bea951801\jakarta.xml.bind-api-2.3.3.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\txw2\2.3.5\ec8930fa62e7b1758b1664d135f50c7abe86a4a3\txw2-2.3.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.sun.istack\istack-commons-runtime\3.0.12\cbbe1a62b0cc6c85972e99d52aaee350153dc530\istack-commons-runtime-3.0.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\5.3.12\2b5f5bb4a78af879bd174ceff5226da3f014ab9d\spring-jcl-5.3.12.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.2.6\b09efa852337fa0dd9859614389eec58dc287116\logback-classic-1.2.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.14.1\ce8a86a3f50a4304749828ce68e7478cafbc8039\log4j-to-slf4j-2.14.1.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\1.7.32\8a055c04ab44e8e8326901cadf89080721348bdb\jul-to-slf4j-1.7.32.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.12.5\52d929d5bb21d0186fe24c09624cc3ee4bafc3b3\jackson-annotations-2.12.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.12.5\725e364cc71b80e60fa450bd06d75cdea7fb2d59\jackson-core-2.12.5.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.2.6\25be1abb32e870ff042e698a799b56587e0dca9a\logback-core-1.2.6.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.14.1\cd8858fbbde69f46bce8db1152c18a43328aae78\log4j-api-2.14.1.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.h2database\h2\1.4.200\f7533fe7cb8e99c87a43d325a77b4b678ad9031a\h2-1.4.200.jar;C:\Users\NOTE\.gradle\caches\modules-2\files-2.1\com.sun.activation\jakarta.activation\1.2.2\74548703f9851017ce2f556066659438019e7eb5\jakarta.activation-1.2.2.jar com.sss.subscriptionsharing.SubscriptionsharingApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.6) 2021-11-12 19:52:53.930 INFO 13244 --- [ main] c.s.s.SubscriptionsharingApplication : Starting SubscriptionsharingApplication using Java 11.0.11 on DESKTOP-N9VOSQK with PID 13244 (C:\springProjects\subscriptionsharing\out\production\classes started by NOTE in C:\springProjects\subscriptionsharing) 2021-11-12 19:52:53.933 INFO 13244 --- [ main] c.s.s.SubscriptionsharingApplication : No active profile set, falling back to default profiles: default 2021-11-12 19:52:54.540 INFO 13244 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2021-11-12 19:52:54.551 INFO 13244 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 5 ms. Found 0 JPA repository interfaces. 2021-11-12 19:52:54.968 INFO 13244 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2021-11-12 19:52:54.977 INFO 13244 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2021-11-12 19:52:54.977 INFO 13244 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.54] 2021-11-12 19:52:55.083 INFO 13244 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2021-11-12 19:52:55.083 INFO 13244 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1109 ms 2021-11-12 19:52:55.184 INFO 13244 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2021-11-12 19:52:55.223 INFO 13244 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.32.Final 2021-11-12 19:52:55.326 INFO 13244 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 2021-11-12 19:52:55.406 INFO 13244 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2021-11-12 19:52:55.445 INFO 13244 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2021-11-12 19:52:55.461 INFO 13244 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 2021-11-12 19:52:55.626 INFO 13244 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2021-11-12 19:52:55.635 INFO 13244 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2021-11-12 19:52:55.674 WARN 13244 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2021-11-12 19:52:55.929 INFO 13244 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2021-11-12 19:52:55.938 INFO 13244 --- [ main] c.s.s.SubscriptionsharingApplication : Started SubscriptionsharingApplication in 2.627 seconds (JVM running for 4.267)

  • JPA
  • spring
  • spring-boot
  • 웹앱
  • java
DOES 댓글 1 좋아요 0 조회수 3618

jar 파일 실행하는게 잘 되지 않습니다..

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

https://www.inflearn.com/questions/53961 이 글을 보고 git bash를 설치해서 인텔리제이에 적용하여 사용중입니다, 윈도우 환경에 자바 버전은 11입니다. java -jar 명령어를 사용해서 .jar 파일을 실행하는 과정이 잘 되지가 않습니다. 파일 이름이 demo-0.0.1-SNAPSHOT.jar 라서 java -jar demo-0.0.1-SNAPSHOT.jar 라는 명령어를 계속 입력했는데 아무 반응도 일어나지 않습니다. 뭐가 잘못된 걸까요?

  • spring-boot
  • spring
  • MVC
  • java
댓글 1 좋아요 0 조회수 439

벌크 연산에 대한 질문

미해결

실전! Querydsl

안녕하세요. <수정, 삭제 벌크 연산> 강의에서 다음 코드에 대한 질문이 있습니다. @Test public void bulkUpdate() { long count = queryFactory .update(member) .set(member.username, "비회원") .where(member.age.lt(28)) .execute(); em.flush(); em.clear(); List<Member> result = queryFactory .selectFrom(member) .fetch(); for (Member member1 : result) { System.out.println("member1 = " + member1); } } em.flush();를 하는 순간 영속성 컨텍스트에 있던 정보가 DB에 반영되게 되는데, 이렇게 되면 update(member)에서 수정한 DB 정보와 충돌이 발생되지 않나요? 따라서 member.username이 "비회원"으로 수정되지 못 하는 것 아닌지요? 읽어주셔서 감사드립니다.

  • JPA
  • java
with_all 댓글 1 좋아요 0 조회수 314

FactoryBean관련해서 질문이 있습니다.

해결됨

스프링 시큐리티

강사님 안녕하세요. 매번 질문만 하게 되는데 답변 친절히 해주셔서 감사합니다 ㅠ 강의를 보면서 궁금한 점이 있었는데 우선 첫번째로, FactoryBean으로 Map객체를 구현하는 이유가 있을까요? 만약 저에게 구현해보라고 한다면, UrlFilterInvocationSecurityMetadataSource에서 데이터들을 가져와서 한번에 했을 것 같은데.. 뭐 이런식으로.. FactoryBean으로 구현하신 이유는 DefaultFilterInvocationSecurityMetadataSource와 최대한 비슷하게 구현하기 위해서 그렇게 하신건가요? 두번째로, UrlResourceMapFactoryBean에서 if (resourceMap == null ) { init( ) }이라고 하셨는데, 이렇게 하신 이유가 무엇때문에 그런건가요? resourceMap은 호출때마다 DB에서 불러와야 하는 것 아닌가요? 항상 감사합니다 ..

  • java
  • Spring Security
  • spring-boot
레오나 댓글 1 좋아요 2 조회수 272

영속성 컨텍스트의 위치

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 컨텍스트가 애플리케이션과 데이터 베이스 사이에서 가상의 데이터베이스 역할을 하게 될텐데 이는 결국 자바 애플리케이션 메모리의 힙 영역에 영속성 컨텍스트가 존재한다는 거겠죠?

  • JPA
  • java
hello 댓글 1 좋아요 1 조회수 340

테스트 케이스 작성 질문드립니다

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 스프링부트환경에서 junit 으로 테스트 케이스를 작성하고 테스트를 하는데 시간이 너무 오래걸리는데 단축할 수 있는 방법이 있는지 알고 싶습니다 테스트 케이스에서 @Autowired 로 서비스를 가져다 쓰고 있는데 실행할때마다 프로젝트의 모든 스프링빈들이 다 올라가고 테스트가 실행되는 것 같습니다 보통 실무에서는 어떻게 하는지 궁금합니다 어쩔 수 없는 부분인건지 아니면 실무에서는 테스트케이스에서 사용하는 서비스만 로딩해서 하는 방법으로 하는건지 잘 모르겠네요 실무에서는 어떤 방법을 써서 테스트 수행시간을 줄이나요? 만약 해당 서비스만 로딩해서 한다면 그 방법도 알고 싶습니다 감사합니다

  • 웹앱
  • spring-boot
  • java
  • spring
  • JPA
lect 댓글 1 좋아요 0 조회수 470

springboot 로그 설정 질문 있습니다.

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

springboot 에서 http log 보는 설정이 뭐였죠? 어디선가 언급해줬는데 아무리 찾아봐도 어디인지 모르겠네요. 검색해도 안나오고 ...

  • spring
  • java
  • spring-boot
  • JPA
전정환 댓글 1 좋아요 0 조회수 235

em.close();

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요. 예제를 돌려보던중 궁금한 점이 생겨 문의 드립니다. public class JpaMain { public static void main (String[] args) { EntityManagerFactory emf = Persistence. createEntityManagerFactory ( "hello" ) ; EntityManager em = emf.createEntityManager() ; EntityTransaction tx = em.getTransaction() ; tx.begin() ; try { Member member1 = em.find(Member. class, 150L ) ; member1.setName( "AAA" ) ; //em.detach(member1); //em.clear(); em.close() ; System. out .println( "=====================" ) ; tx.commit() ; } catch (Exception e) { tx.rollback() ; } finally { em.close() ; } emf.close() ; } } 위와 같이 테스트 하였는데요. em.detach(member1); em.clear(); 과는 달리 em.close(); 의 경우는 업데이트 문이 찍히고 DB도 업데이트 되는데 나머지 둘과는 다르게 동작하는걸까요?

  • JPA
  • java
snowshinesz 댓글 1 좋아요 0 조회수 451

도메인 주도 설계 강의도 만들어주세요~~

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. cascade는 동일한 aggregate 에 포함되는 경우에 넣는거겠죠? 저희 예제에서 delivery는 order에서 cascade로 포함했는데 만약 다른 테이블에서 delivery를 참조하고 있으면 order_delivery 라고해서 별도의 테이블을 만들어도 되겠죠? 데이터 중복이지만 ddd에서 바운더리 컨텍스트 그런 개념에서 보면 문제가 없는걸까요?

  • JPA
  • spring
  • java
  • spring-boot
  • 웹앱
임창수 댓글 1 좋아요 0 조회수 451

3-2 공통원소구하기 관련 질문입니다.

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

시간복잡도 n 으로 풀라고 되있어서 한참 고민했는데, 강의 영상에는 Array.sort로 두 배열을 먼저 정렬 하셨다라구요. 그러면 이미 복잡도 n^2 아닌가 해서 질문 여쭙니다.

  • java
  • 코테 준비 같이 해요!
herryboro 댓글 1 좋아요 0 조회수 345

windows h2 콘솔 실행이 안됩니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

저는 현재 윈도우인데 h2 console이 설치는 했으나 실행이 안됩니다... chmod 775? 755이것도 해보았으나 안되는거같습니다 boot로 h2넣어서는 되는데 왜 이건 안되는걸까요?

  • JPA
  • java
댓글 1 좋아요 0 조회수 401

Dto 반환 질문입니다

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

그 예전에 영한님께서 JSON으로 반환 할 때 쿼리를 통해서 얻은 값을 그대로 반환하지 말고 클래스로 묶어서 반환하라고 하셨던게 기억이 납니다. 쿼리를 통해서 얻은 결과가 예를들어 List<PersonDto> name : ~~~ age : ~~~ address: ~~ 이런식으로 되어 있을때 이 리스트를 그대로 반환하면 JSON 형식이 배열로 시작해서 그 후에 값을 수정 할 수 없다고 들었던거 같은데요!! 질문이 있습니다 저 List<PersonDto>를 감싸는 하나의 클래스를 만들때 예를 들어서 class PersonExmpleDto{ private ArrayList<PersonDto> persondto; ] 이런식으로 반환 할 때 클래스 이름을 어떻게 해야 할 지 모르겠습니다.... 쿼리를 통해서 얻은 List로 묶은 PersonDto를 하나의 클래스에서 반환하고자 할 때 클래스의 네이밍은 어떤식으로 하나요? class PersonListDto{ private ArrayList<PersonDto> persondto; } 이런식으로 하나요...??

  • spring
  • JPA
  • spring-boot
  • java
ariwarabbang 댓글 1 좋아요 0 조회수 452

조금 더 안전한 방법과 조금 더 개선한 방법의 차이

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

안녕하십니까 강사님 ! 질문있습니다 :) 조금 더 개선한 방법 의 원리는 만약 인증이 들어왔을 때, Username 과 시리즈는 일치하지만 토큰이 일치하지 않으면 토큰이 해커에 의해 탈취되었다고 간주해서 모든 토큰을 삭제하는 원리인데, 조금 더 안전한 방법 도 Username 은 일치하지만 토큰이 다르면 똑같이 탈취되었다고 간주하고 모든 토큰을 삭제하면 동일하게 동작하지 않을까 하는 궁금증이 생겼습니다. 전자랑 후자 방법 둘다 해싱에 패스워드는 사용되지 않아서 복호화 된다고해도 계정이 탈취당하는 일이 없는데 굳이 시리즈를 이용하는 이유가 있을까요??

  • spring
  • spring-boot
  • thymeleaf
  • java
  • JPA
codren 댓글 1 좋아요 0 조회수 313

영한님 강의 아래 사용한 단축키에 대한 정보를 나타내는 자막? 같은건 어떻게 할 수 있나요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 영한님 강의 아래 사용한 단축키에 대한 정보를 나타내는 자막? 같은건 어떻게 할 수 있나요?

  • spring
  • spring-boot
  • java
  • MVC
댓글 1 좋아요 0 조회수 464

JPQL 에 대해서 질문이 있습니다 ..!

미해결

실전! 스프링 데이터 JPA

안녕하세요 영한님. 영한님의 강의를 한번씩 보고 개인적으로 공부를 하면서 연습을 해오고 있는데. 수업 예제는 아니지만 궁금한 점이 생겨서 검색을 해도 잘 나오지 않아 질문을 남기게 되었습니다. --------------------------------------------------- 상품을 대여하는 기능을 작성해 보기위해 만든 클래스 입니다. 연관관계는 단방향 매핑이 좋다 말씀하셔서 단방향으로 구성을 해봤습니다. 이 클래스에 있는 user는 빌리는 사람의 클래스입니다. product 클래스 안에 상품의 주인인 User클래스를 매핑해 주었습니다. User클래스에는 매핑된 테이블이 없습니다. 이렇게 작성이 되어있고 만약 자신이 대여를 신청한 상품을 조회하고 싶은 쿼리문을 작성하고 싶은데 이렇게 작성을 했었습니다. 하지만 https://www.inflearn.com/questions/15876 이 질문의 글에 fetch 조인에 대상이 되는 곳에는 where절을 사용하면 안된다 말씀을 해주신 것을 보고 다른 방법이 떠오르지가 않아서요 .. 혹시 더 좋은 방법이 있다면 어떠한 방식으로 해결해 나가면 좋을까요? 수업예제와 다른 주제로 질문을 드려 죄송합니다.

  • spring-boot
  • java
  • spring
  • JPA
댓글 1 좋아요 0 조회수 300

JPA 개발 관련 질문입니다

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

19:00 시간에 보고 궁금한게 있습니다. JPA 실행해서 나온 sql 스크립트를 보고 수정할 부분이 있으면 수정해서 ddl 을 직접 작성하신다고 하셨는데, 수정된 ddl 에 맞게 JPA 에서도 코드를 수정해야하는걸까요? 아래 방식으로 개발이 진행되는 것이 맞는지 궁금하네요 JPA 코드작성 -> DDL 스크립트 확인 및 수정 -> DDL 직접 작성하여 DB에 반영 -> 수정된 ddl에 맞게 다시 JPA 코드 수정 -> 애플리케이션 실행 (뭔가 질문이 이상한 것 같기도한데; 이해가 어려운 부분은 편하게 말씀 부탁드립니다)

  • 웹앱
  • java
  • spring
  • JPA
  • spring-boot
댓글 1 좋아요 0 조회수 198

@Transactional(readOnly=true) 설정에 대한 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요, 최근 부하테스트를 진행하며 성능개선을 해보려하고 있습니다. 그 중 단순 DB 조회 API에 대해 테스트를 진행하고 있는데, 스레드 덤프를 확인한 결과 SessionImpl.doFlush()가 호출되는 것을 보고 트랜잭션이 끝나는 시점에 자동으로 flush가 호출되는 것을 발견했고, 때문에 readOnly 설정이란 것을 찾아서 설정하고 다시 테스트를 진행했습니다. 반복해서 테스트를 진행해 봤는데, readOnly를 설정하지 않았을때가 TPS가 높게 측정이 됩니다. 왜 그런지 알 수 있을까요.. 그림은 순서대로 readOnly를 설정하지 않았을 때와 설정했을 때 입니다. 테스트 대상 API의 코드는 아래 링크의 getMovieList() 입니다. https://github.com/hapHollys/booook/blob/main/src/main/kotlin/com/haphollys/booook/presentation/controller/MovieController.kt

  • java
  • JPA
  • spring-boot
  • spring
galid 댓글 2 좋아요 0 조회수 478

인기 태그

인프런 TOP Writers

주간 인기글