실무에서도 repository를 도메인마다 따로 만드나요??
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
이 강의는 도메인 별로 각 각 repository랑 service를 만들었는데 예제에서만 그런건지 실제로 실무에서도 그런지 궁금합니다 ㅠㅠ
- repositroy
- domain
- spring-boot
- java
- JPA
- 웹앱
- spring
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
이 강의는 도메인 별로 각 각 repository랑 service를 만들었는데 예제에서만 그런건지 실제로 실무에서도 그런지 궁금합니다 ㅠㅠ
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
만약 다음과 같이 여러곳에서 image라는 테이블을 참조한다면.. 그땐 어떻게 코드를 구현해야하는건가요? 프로젝트와 이미지는 1:n관계지만 이를 일대다로도 다대일로도 구현할 수있잖아요? 1. 만약에 다대일 양방향으로 구현 2. 일대다 단방향으로 구현 >>첫번째질문 : 어느것으로 해도 상관없나요? 근데 2번 방법을 지양하라고 하셨던 것 같아요 그래서 만약 1번 방법으로 한다고 가정할게요. 이미지 테이블같은경우 어떨땐 프로젝트의 이미지가 될수있고 (그러면 게시글의 이미지는 아닐테니 게시글_id값은 null이 되겠죠) 어떨땐 게시글의 이미지가 되겠죠..? >>두번째질문 : 근데 이 이미지가 게시글의 이미지인지 프로젝트의 이미지인지가 중요할까요..? >>세번째질문 : 만약에 중요하다면 enum을 사용하여 어떤 것의 이미지인지를 반환하는 메서드를 만들어주면되는건가요/?
해결됨
프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
안녕하세요 캐시수업도 매우 유익하네요 ... 수업듣고 사이트를 보다가 궁금한점이 생겼는데요~ 질문1. HTML 상단 메타태그에 <meta http-equiv="Cache-Control" content="no-cache"> 를 주면 서버에서 설정하지 않아도 예제에서 사용한거랑 같이 해당 HTML이 변경될 때만 다운로드할까요 ? (이러면 request header의 캐시컨트롤에 노캐시가 붙나요?) 질문2. 예제에선 HTML을 제외하고 CSS JS Image의 max-age를 길게주고 소스 변경시에만 hash를 다르게 붙여 변경된 리소스만 새 파일을 다운로드 하게 했는데요 HTML CSS JS Image를 모두 no-cache로 주면 어떻게 작동할까요 ?
미해결
스프링 시큐리티
안녕하세요. 항상 좋은 강의 감사드립니다! SecurityContextholder 관련 질문이 있어 글을 적게 되었습니다. SecurityContext는 ThreadLocal 기반이고, 이를 전역에서 사용할 수 있도록 Static 변수인 SecurityContextHolder에 저장된다고 이해를 했습니다. (강의 내용을 참고, 혹시.. SecurityContextHolder가 Static 변수가 아니라면 정정해주시면 감사하겠습니다!) 여기서 궁금한 부분은... 멀티 쓰레딩 환경입니다. 스프링 MVC는 결국 요청마다 쓰레드가 할당되는 쓰레딩풀 환경이라 멀티 쓰레드로 동작을 하고 있는 것으로 알고 있습니다. 그렇다면 동시에 사용자로부터 인증 요청이 온다면, 동시에 SecurityContextHolder에 SecurityContext가 각각 저장된다는 것인데.. 이런 환경에서 어떻게 동작하는지 잘 이해하기가 어렵습니다. 예를 들어 동시에 인증 요청이 오게 되면, SecurityContextHolder의 동시성 문제는 어떻게 처리되는 걸까요? 항상 좋은 강의 감사드립니다 좋은 하루 되세요!
해결됨
스프링 부트 개념과 활용
안녕하세요 강의 듣고 혼자 이것저것 해보고있는데 타임리프 의존성을 추가하지 않으면 컨트롤러에서 view를 호출을 못하던데 스프링 부트로 컨트롤러로 view를 호출하려면 무조건 타임리프 의존성을 추가해야하는지 궁금해서 질문드립니다.
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 선생님 강의 정말 재밌게 듣고 있습니다 다름이 아니라 Service에 join메서드에서 id(Long) 값을 반환해주고 있는데 선생님께서 앞서 질문에서 CQS라고 말씀해주셨습니다. 서비스에서는 테스트의 용이성 등등 여러 장점때문에 Id값을 반환하는게 좋다고 말씀해주셨는데 컨트롤러에서는 join 이나 혹은 다른 Command쿼리를 날리는 메서드들에서 반환값은 어떤게 좋을까요.. id를 반환해 줄 수도 있는거고 void를 반환할 수 도 있는데 어떤게 best practice 인지 궁금합니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
이번 강의를 듣고 나름대로 간단한 테스트 코드를 만들어 봤는데요 이렇게 하는게 맞나 싶어서 여쭤봅니다 public class ItemTest { @Test public void 수량증가 () { //given Item item = new Book() ; item.setStockQuantity( 10 ) ; //when item.addStock( 10 ) ; //Then Assertions. assertThat (item.getStockQuantity()).isEqualTo( 20 ) ; } @Test public void 수량감소 _ 합계 0_ 이상 () { //given Item item = new Book() ; item.setStockQuantity( 10 ) ; //when try { item.removeStock( 10 ) ; } catch (NotEnoughStockException e) { return; } //Then Assertions. assertThat (item.getStockQuantity()).isEqualTo( 0 ) ; } @Test public void 수량감소 _ 예외발생 () { //given Item item = new Book() ; item.setStockQuantity( 10 ) ; //when try { item.removeStock( 11 ) ; } catch (Exception e) { e.printStackTrace() ; return; } fail ( " 예외가 발생해야 한다 ." ) ; } } 이렇게 진행해도 괜찮을까요? 이상한 부분이 있다면 조언 부탁드리겠습니다
해결됨
프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
좋은 강의 너무 잘 듣고 있습니다. 번외지만 배포에대해 궁금한점이 있습니다. 지금 강의 예제로 사용하는 프로젝트와 같이 서버와 클라이언트 코드가 같이 있는 경우에는 어떻게 배포해야하는지 궁금합니다. 개발할때는 npm run serve 와 같이 수동으로 서버를 켜서 작동시킬 수 있지만 그렇지 않을때는 어떻게 작동시킬 수 있나요? 실제로는 서버용 레포, 클라용 레포 따로 개발해서 배포해야하는 건가요?
해결됨
스프링 시큐리티
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: io.security.corespringsecurity.domain.entity.Role; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: io.security.corespringsecurity.domain.entity.Role 찾아보니까 @ManyToOne(cascade = {CascadeType.ALL},fetch = FetchType.LAZY) 해당 에러가 발생 합니다. RoleHierarchy 의 경우 package io.security.corespringsecurity.domain.entity; import lombok.*; import javax.persistence.*; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @Entity @Table(name="ROLE_HIERARCHY") @Data @AllArgsConstructor @NoArgsConstructor @ToString(exclude = {"parentName", "roleHierarchy"}) @Builder public class RoleHierarchy implements Serializable { @Id @GeneratedValue private Long id; @Column(name = "child_name") private String childName; @ManyToOne(cascade = {CascadeType.ALL},fetch = FetchType.LAZY) @JoinColumn(name = "parent_name", referencedColumnName = "child_name") private RoleHierarchy parentName; @OneToMany(mappedBy = "parentName", cascade={CascadeType.ALL}) private Set<RoleHierarchy> roleHierarchy = new HashSet<RoleHierarchy>(); } 해당 내용으로 작성 하였구요 SetupDataLoader에서 setupSecurityResources() => private void setupSecurityResources() { Set<Role> roles = new HashSet<>(); Role adminRole = createRoleIfNotFound("ROLE_ADMIN", "관리자"); roles.add(adminRole); createResourceIfNotFound("/admin/**", "", roles, "url"); createUserIfNotFound("admin", "pass", "admin@gmail.com", 10, roles); Set<Role> roles1 = new HashSet<>(); Role managerRole = createRoleIfNotFound("ROLE_MANAGER", "매니저"); roles1.add(managerRole); createResourceIfNotFound("io.security.corespringsecurity.aopsecurity.method.AopMethodService.methodTest", "", roles1, "method"); createResourceIfNotFound("io.security.corespringsecurity.aopsecurity.method.AopMethodService.innerCallMethodTest", "", roles1, "method"); createResourceIfNotFound("execution(* io.security.corespringsecurity.aopsecurity.pointcut.*Service.*(..))", "", roles1, "pointcut"); createUserIfNotFound("manager", "pass", "manager@gmail.com", 20, roles1); createRoleHierarchyIfNotFound(managerRole, adminRole); Set<Role> roles3 = new HashSet<>(); Role childRole1 = createRoleIfNotFound("ROLE_USER", "회원"); roles3.add(childRole1); createResourceIfNotFound("/users/**", "", roles3, "url"); createUserIfNotFound("user", "pass", "user@gmail.com", 30, roles3); createRoleHierarchyIfNotFound(childRole1, managerRole); } 해당 내용으로 작성 하였습니다. 보고 따라치는 과정에서 무언가 빠졌을까요
해결됨
프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
강사님 강의자료는 어디서 받을 수 있나요?? 아무리 찾아봐도 없어서 질문드립니다.
해결됨
[리뉴얼] React로 NodeBird SNS 만들기
안녕하세요. 제로초님의 강의에 큰 도움을 받고 있음에 감사의 말씀을 드립니다. 여러 검색결과도, 질문답변도, 해당강의 반복재생으로 찾아보았으나 해결치 못한 부분이 있어 이렇게 직접 질문을 하게 됐네요! [ 마주한 문제점 & 상황 ] 은 다음과 같습니다. 1. ( 이전 상황) 로그인폼(Id, Pwd)에 텍스트를 입력해 "로그인" 버튼을 누르면 정상적으로 로그인이 됐고, Redux 역시 정상작동해 개발자도구에서 확인이 가능했습니다. 2. ( 현재 상황) 섹션3(Redux) "더미데이터와 포스트폼 만들기" 강의를 들으며 문제에 마주했습니다. 3. ( 더미데이터와 포스트폼 만들기 강의 후 ) 잘 넘어가던 로그인 화면에서 데이터는 넘어가 콘솔에 찍히지만, 화면 페이지는 게시판으로 넘어가지 않는 상황에 직면했습니다. [ 콘솔에 찍히는 Error ] 는 다음과 같습니다. [정상적으로 넘어가는 로그인 데이터] -> 그러나 로그인이 되지 않고 화면이 넘어가질 않습니다! [ 소스코드 ] 1. package.json { " name " : " react-nodebird-front " , " version " : " 1.0.0 " , " description " : "" , " main " : " index.js " , " scripts " : { " dev " : " next -p 3060 " , " build " : " next build " }, " author " : "jj " , " license " : " ISC " , " dependencies " : { " @ant-design/icons " : " ^4.7.0 " , " antd " : " ^4.19.0 " , " next " : " ^9.5.5 " , " next-redux-wrapper " : " ^6.0.2 " , " prop-types " : " ^15.8.1 " , " react " : " ^16.14.0 " , " react-dom " : " ^16.14.0 " , " react-redux " : " ^7.2.8 " , " redux " : " ^4.1.2 " , " redux-devtools-extension " : " ^2.13.9 " , " styled-components " : " ^5.3.3 " }, " devDependencies " : { " eslint " : " ^8.10.0 " , " eslint-plugin-hooks " : " ^0.4.2 " , " eslint-plugin-import " : " ^2.25.4 " , " eslint-plugin-react " : " ^7.29.3 " } } 2. LoginForm.js 파일 import React , { useState , useCallback , useMemo } from ' react '; import { Form , Input , Button } from ' antd '; import Link from ' next/link '; import styled from ' styled-components '; import { useDispatch , useSelector } from ' react-redux '; import useInput from " ../hooks/useInput "; import { loginAction } from ' ../reducers/user '; const ButtonWrapper = styled . div ` margin-top: 10px; ` ; const FormWrapper = styled (Form) ` padding: 10px; ` ; const LoginForm = ({ setIsLoggedIn }) => { const dispatch = useDispatch () ; const [ id , onChangeId ] = useInput ( '' ) ; const [ password , onChangePassword ] = useInput ( '' ) ; const onSubmitForm = useCallback ( () => { console . log ( id , password ) ; dispatch ( loginAction ( { id , password } )) ; }, [ id , password ]) ; return ( < FormWrapper onFinish ={ onSubmitForm } > < div > < label htmlFor = " user-id " > 아이디 </ label > < br /> < Input name = " user-id " value ={ id } onChange ={ onChangeId } required /> </ div > < div > < label htmlFor = " user-password " > 비밀번호 </ label > < br /> < Input name = " user-password " type = " password " value ={ password } onChange ={ onChangePassword } required /> </ div > < ButtonWrapper > < Button type = " primary " htmlType = " submit " loading ={ false } > 로그인 </ Button > < Link href = " /signup " >< a >< Button > 회원가입 </ Button ></ a ></ Link > </ ButtonWrapper > </ FormWrapper > ) ; } export default LoginForm ; 3. index.js import React from ' react '; import { useSelector } from " react-redux "; import AppLayout from " ../components/AppLayout "; import PostForm from ' ../components/PostForm '; import PostCard from ' ../components/PostCard '; const Home = () => { const { isLoggedIn } = useSelector ( ( state ) => state . user ) ; const { mainPosts } = useSelector ( ( state ) => state . post ) ; return ( < AppLayout > { isLoggedIn && < PostForm /> } { mainPosts . map ( ( post ) => < PostCard key ={ post . id } post ={ post } /> ) } </ AppLayout > ) ; } export default Home ; 4. configureStore.js import { createWrapper } from ' next-redux-wrapper '; import { applyMiddleware , compose , createStore } from ' redux '; import { composeWithDevTools } from ' redux-devtools-extension '; import reducer from ' ../reducers '; const configureStore = () => { const middlewares = [] ; const enhancer = process . env . NODE_ENV === ' production ' ? compose ( applyMiddleware ( ... middlewares )) : composeWithDevTools ( applyMiddleware ( ... middlewares )) ; const store = createStore ( reducer , enhancer ) ; return store ; }; const wrapper = createWrapper ( configureStore , { debug : process . env . NODE_ENV === ' development ' , } ) ; export default wrapper ; 5. post.js // [ initialState ] export const initialState = { mainPosts : [ { id : 1 , User : { id : 1 , nickname : ' jj ' , }, content : ' 첫 번째 게시글 #해시태그 #익스프레스 ' , Images : [ { src : ' https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxNjExMjFfMjM2%2FMDAxNDc5NjY5MjEyOTEz.13R8uiaA0T8rJnLPJICAib4oVtrAzA424jbDMC9a3ckg.m0QoHt-5MdR0MH501npcL8aJof3Eu1h_9Zp0ceNm8e4g.PNG.guri4you%2F%25BB%25F6%25B1%25F2_%25BD%25C9%25B8%25AE%25C5%25D7%25BD%25BA%25C6%25AE1.png&type=sc960_832 ' , }, { src : ' https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxNjExMjFfMjM2%2FMDAxNDc5NjY5MjEyOTEz.13R8uiaA0T8rJnLPJICAib4oVtrAzA424jbDMC9a3ckg.m0QoHt-5MdR0MH501npcL8aJof3Eu1h_9Zp0ceNm8e4g.PNG.guri4you%2F%25BB%25F6%25B1%25F2_%25BD%25C9%25B8%25AE%25C5%25D7%25BD%25BA%25C6%25AE1.png&type=sc960_832 ' , }, { src : ' https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxNjExMjFfMjM2%2FMDAxNDc5NjY5MjEyOTEz.13R8uiaA0T8rJnLPJICAib4oVtrAzA424jbDMC9a3ckg.m0QoHt-5MdR0MH501npcL8aJof3Eu1h_9Zp0ceNm8e4g.PNG.guri4you%2F%25BB%25F6%25B1%25F2_%25BD%25C9%25B8%25AE%25C5%25D7%25BD%25BA%25C6%25AE1.png&type=sc960_832 ' , } ] , Comments : [ { User : { nickname : ' jj4 ' , }, content : ' redux를 학습 중입니다. ' , }, { User : { nickname : ' jj3 ' , }, content : ' 다음은 sage를 학습 예정임. ' , } ] } ] , imagePaths : [] , postAdded : false , } const ADD_POST = ' ADD_POST ' ; export const addPost = { type : ADD_POST , } const dummyPost = { id : 2 , content : ' 더미데이터입니다. ' , User : { id : 1 , nickname : ' jj1 ' , }, Images : [] , Comments : [] , }; const reducer = ( state = initialState , action ) => { switch ( action . type ) { case ADD_POST : return { ... state , mainPosts : [ dummyPost , ... state . mainPosts ] , postAdded : true , }; default : return state ; } }; export default reducer ; 6. PostForm.js import React , { useCallback , useState , useRef } from ' react '; import { Form , Input , Button } from ' antd '; import { useSelector , useDispatch } from ' react-redux '; import { addPost } from ' ../reducers/post '; const PostForm = () => { const { imagePaths } = useSelector ( ( state ) => state . post ) ; const dispatch = useDispatch () ; const imageInput = useRef () ; const [ text , setText ] = useState ( '' ) ; const onChangeText = useCallback ( ( e ) => { setText ( e . target . value ) ; }, []) ; const onSubmit = useCallback ( () => { dispatch ( addPost ) ; setText ( '' ) ; }, []) ; const onClickImageUpload = useCallback ( () => { imageInput . current . click () ; }, [ imageInput . current ]) ; return ( < Form style ={{ margin : ' 10px 0 20px ' }} encType = " multipart/form-data " onFinish ={ onSubmit } > < Input.TextArea value ={ text } onChange ={ onChangeText } maxLength ={ 140 } placeholder = " 어떤 신기한 일이 있었나요? " /> < div > < input type = " file " multiple hidden ref ={ imageInput } /> < Button onClick ={ onClickImageUpload } > 이미지 업로드 </ Button > < Button type = " primary " style ={{ float : ' right ' }} htmlFor = " submit " > 짹짹 </ Button > </ div > < div > { imagePaths . map ( ( v ) => ( < div key ={ v } style ={{ display : ' inline-block ' }} > < img src ={ v } style ={{ width : ' 200px ' }} alt ={ v } /> < div > < Button > 제거 </ Button > </ div > </ div > )) } </ div > </ Form > ) }; export default PostForm ; 7. PostCard.js import React from ' react '; const PostCard = () => { return ( < div > PostCard </ div > ) ; }; export default PostCard ; 8. user.js import { HYDRATE } from ' next-redux-wrapper '; // initialState 부분 const initialState = { user : { isLoggedIn : false , user : null, signUpData : {}, loginData : {}, }, post : { mainPosts : [] , } }; // [로그인] action creator export const loginAction = ( data ) => { return { type : ' LOG_IN ' , data , } }; // [로그아웃] action creator export const logoutAction = ( data ) => { return { type : ' LOG_OUT ' , } }; // reducer const rootReducer = ( state = initialState , action ) => { switch ( action . type ) { case HYDRATE : console . log ( ' HYDRATE ' , action ) ; return { ... state , ... action . payload }; case ' LOG_IN ' : return { ... state , user : { ... state . user , isLoggedIn : true , user : action . data , }, }; case ' LOG_OUT ' : return { ... state , user : { ... state . user , isLoggedIn : false , user : null, }, }; default : return state ; } }; export default rootReducer ; 다소 많은 양의 글 내용이지만, 시간이 허락되실 때 답변 주시면, 참 감사할 것 같습니다! 오늘 하루도 고생많으셨고, 이번 한 주도 파이팅입니다! 늘 양질의 강의 감사합니다 ^^
미해결
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요? 1.이전에는 됐는데, 왜 다시할때는 안되는건지 모르겠네요 ㅠㅠ 11분경에 보내시는 메일이 발송이 되지 않습니다. 다음과 같이 1이 출력되면 메일이 발송성공한 것으로 알고 있는데, 기다려 보아도 메일이 오지를 않네요 강의 후반부에 회원가입과 동시에 메일을 보내는 부분도 메일이 발송되지가 않습니다 ㅠㅠ 2. 14분경에 views.py에서 signup함수 내부에 form.save()를 signed_user = form.save()로 바꿔주시는데, form.save()라는 함수가 값들을 실질적으로 db에 저장하는 것으로 알고 잇습니다. 그러면 signed_user = form.save()로 받아주는 부분은 해당 데이터를 db에 저장하는 동시에 저장된 그 유저 인스턴스(데이터 한행)를 변수에 담는 것인가요? 좋은 강의 감사합니다
미해결
비전공자를 위한 진짜 입문 올인원 개발 부트캠프
버전이 달라서 그런지 인터페이스도 다르고 메뉴도 다른 것 같아요 AVD Manager도 보이지 않고요 ㅠ 어떻게 해야 할지 모르겠습니다
미해결
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
두번째 테스트 케이스에서 왜 답이 3번 학생인지 이해되지 않습니다! 3번 학생은 같은 반 해본 적이 2회 뿐인데 왜 3회 해본 4번 학생이 아닌 3번 학생이 답인가요? 5 9 8 7 6 5 : 1회 5 6 7 8 9 : 1회 1 2 3 7 8 : 2회 4 5 3 4 2 : 3회 6 2 8 4 2 : 3회
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
add 후에 List페이지로 이동하면, 흰화면으로 에러가 출력됩니다. Home.js 의 프로퍼티에 대해 undefind 가 출력됩니다. [Uncaught TypeError: Cannot read properties of undefined (reading 'length') at Home.js:15:1] [ diaryList.length >= 1 ] : 에러 발생하는 부분 useEffect (() => { if ( diaryList . length >= 1 ) { //에러발생부분 const firstDay = new Date ( curDate . getFullYear (), curDate . getMonth (), 1 ). getTime (); const lastDay = new Date ( curDate . getFullYear (), curDate . getMonth () + 1 , 0 ). getTime (); setData ( diaryList . filter (( it ) => firstDay <= it . date && it . date <= lastDay ) ); } }, [ diaryList , curDate ]);
해결됨
풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
안녕하세요 선생님! 질문 드릴게 있습니다. 처음부터 setState에서 로직을 처리하는게 아닌 아래와 같이 onUpdate 함수에서 msgs를 splice를 하여 updateMsg에 할당해주고 setMsgs((msgs) => [updateMsg, ...msgs]) 수정된 updateMsg를 바꾸어주고 기존의 존재했던 state값을 스프레드 연산자로 코드를 작성하였습니다! 해당 리스트가 삭제되긴 하지만 msgItem이 계속 쌓이고 있는 부분이 있습니다. 어떤 부분이 문제인지 알고싶습니다!
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요! 강의 도중 궁금한 점이 생겨 질문드립니다. form의 입력값들을 객체에 세팅할 때 setter를 쓰는걸로 알고있습니다! 아래 코드 처럼요 < input type ="text" th :field =" *{ name } "> -> memberForm.setName(input의 입력값); 영한님이 setter를 열어두는 것은 위험하다고 하셨는데 form 태그에 들어가는 정보와 관련된 필드를 가진 객체를 사용할 때는 setter를 반드시 열어둬야 하는건가요? MemberForm의 @Setter를 지우고 실행하면 form 필드의 값이 전부 null이 찍힙니다!
미해결
비전공자를 위한 진짜 입문 올인원 개발 부트캠프
<질문1> Products.js에서 sequelize.define로 테이블 정의시 복수형태로 Products된다고 들었는데 models.Product.create도 Product 단수 형태로 테이블 이름에서 s를 빼주는건가요??? <질문2> result를 log찍어 봤을떄는 또 Product라고 나오고 위에는 Products 테이블로 insert into 됐다고 나오는데 테이블을 만들어주는건 models/products.js 에서하는건데 model.Product.create 이말은 사실 테이블 생성이아니라 데이터 삽입이라고 보면 될까요? models . Product . create ( { name , description , price , seller , } )
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
다른 설정을 따로 해줘야 할까요??,,, Item class Member Order OrderItem OrderStatus getter setter 잘린 부분은 생략했습니다.
미해결
실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
강의 중 나오는 선언 태그 내 system.out.println~ 구문에서 에러가 발생합니다. page 지시어로 java.lang.* 을 추가했는데도 실행이 안되네요 ㅠㅠ 왜 이럴까요.. Type Exception Report Message JSP를 위한 클래스를 컴파일할 수 없습니다.: Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다.: JSP 파일 [/jspEx.jsp]의 [22] 행에서 오류가 발생했습니다. System.out cannot be resolved to a type 19: ArrayList<String> list = new ArrayList<String>(); 20: 21: public void jspMethod() { 22: System.out.println("-- jspMethod() --"); 23: } 24: %> 25: