묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA에서 H2안에 데이터가 안들어갑니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.일단 Hibernate 콘솔에서도 차이가 납니다. 일단은 문제없이 TestCode가 잘되서 끝까지 듣고 하는데 H2에 반영이안되었습니다. 하나하나 찾아보고 전부 다시해보았지만 똑같았습니다...H2 입니다SpringConfig 입니다.dependencies 입니다application.properties 입니다.무엇이 문제인지 알려주시면 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
type=Internal Server Error, status=500
error 500이면 코드가 잘못된 거 같은데 어디가 잘못 됐는지 봐주실 수 있을까요🥺HelloControllerpackage com.example.hello_spring.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!"); return "hello"; } @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template"; } @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name){ return "hello" + name; } jdbcMemberRepositorypackage com.example.hello_spring.repository; import com.example.hello_spring.domain.Member; import org.springframework.jdbc.datasource.DataSourceUtils; import javax.sql.DataSource; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Optional; public class jdbcMemberRepository implements MemberRepository { private final DataSource dataSource; public jdbcMemberRepository(DataSource dataSource) { this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findById(Long id) { String sql = "select * from member where id = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } else { return Optional.empty(); } } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public List<Member> findAll() { String sql = "select * from member"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); List<Member> members = new ArrayList<>(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); members.add(member); } return members; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); } private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { close(conn); } } catch (SQLException e) { e.printStackTrace(); } } private void close(Connection conn) throws SQLException { DataSourceUtils.releaseConnection(conn, dataSource); } }콘솔창 오류메시지 2024-07-20T10:30:05.545+09:00 ERROR 17396 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection] with root cause
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
aop 실행에 대한 이해가 안됩니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.MemberService에서 try/finally및 변수만 설정 해줬을 뿐인데왜 실행은 test->MemberServiceIntegration이 아니라HelloSpringApplication으로 실행을 해야 결과가 나타나게 되나요? 굳이 차이를 못느끼겠는데 왜 그런지 이해가 안가네요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
첫 강의에서 만든 hello-spring 파일과 IntelliJ관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 IntelliJ에서 프로젝트 파일들을 다루는 부분이 아직 미숙하여 질문드립니다. 1강을 들으면서 실행했을 때는 강의에서 생성한 hello-spring 프로젝트를 상위 폴더인 spring에 담고 spring 폴더로 IntelliJ를 열어서 실행했습니다. 이때는 정상적으로 실행이 되었는데, 다시 실행하려고 보니 실행이 안 됩니다. 다시 다운로드 받고 검색을 해봤지만, 설정에서 idk와 grade관련된 설정만 나왔습니다. 그런데 상위 폴더인 spring이 아닌 spring 프로젝트로 생성한 hello-spring으로 IntelliJ를 실행시키니 정상적으로 폴더들(패키지들)을 인식하고 실행이 됩니다. 원래 이렇게 작동하는 것이 맞는건지 제가 설정 부분을 잘못 건드려서 발생한 문제인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
member 1, 2 중복 회원 예외 test
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]member 1, 2가 spring으로 동일한데 해당 코드를 실행하면 초록색 표시로 test가 통과하는데 이렇게되면 중복 문제 확인은 어떻게 하나요? 강의를 잘못 이해한 걸까요,,,
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@{/css/bootstrap.min.css}
templates에 item.html을 타임리프를 적용하는데<link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> 강의에 나온 코드에서 왜 th:href="@{../css/bootstrap.min.css}"으로 상위 경로로 가지 않아도 작동하는 이유가 뭔가요?그리고 이상하게 th:href="@{../css/bootstrap.min.css}"으로 하면 적용이 안되는 이유와 관련이 있나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 빌드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.gradlew build가 제대로 되지 않습니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
하나의 비즈니스 로직에서 동일한 Connection을 사용해야 하는 것에 대해 질문드립니다.
강의를 듣다가 의문점이 생겨서 질문 드립니다.아래 코드는 강의중 작성된 코드입니다.private void bizLogic(Connection con, String fromId, String toId, int money) throws SQLException { //findById 호출시 connection을 전달 Member fromMember = memberRepository.findById(con, fromId); Member toMember = memberRepository.findById(con, toId); memberRepository.update(con, fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(con, toId, toMember.getMoney() + money); }강의를 듣던 도중 findById와 update는 굳이 같은 connection을 사용할 필요가 없다고 생각이 들었습니다.그래서 아래와 같이 코드를 수정했고 강의에서 작성한 테스트 코드가 정상적으로 성공하였습니다.private void bizLogic(Connection con, String fromId, String toId, int money) throws SQLException { //findById 호출시 connection을 전달하지 X Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(con, fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(con, toId, toMember.getMoney() + money); }여기서 드는 의문점은 findById는 DB에서 Member 정보를 가져오는 것이고, 이 기능은 계좌 이체를 위한 update와 다른 connection을 사용해도 문제가 없다고 생각됩니다. 그럼에도 불구하고, 하나의 비즈니스 로직 흐름에서 같은 connection을 사용하는 것이 DB의 원자성을 지키기 위해 중요하다고 생각했습니다.실무에서 한 비즈니스 로직 안에서 같은 connection을 사용하지 않아도 되는 경우에도 동일한 connection을 사용하는 것이 바람직한가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트케이스 findbyname
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)//get()추가하면 optional 깔 수 있음, 에러뜸[질문 내용]test케이스에서 findByName 테스트할때 Optional에서 까기 위해 get메소드를 한번 더 써주신다고 하셨는데get()대신 optional로 테스트하면 에러가 발생됩니다.값에 optional[]이 붙어서 그런거같은데 이 경우는 get() 추가 사용 대신 optional로는 테스트 못하는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ItemType null 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.ItemType 라디오버튼을 체크하지 않고 등록할 경우, Item 객체의 ItemType 값이 null 인 걸 확인했는데요. editForm.html 이나 item.html 에서 th:field값의 ${item.itemType} 도 당연히 null 이겠죠? 응답데이터에 애초에 itemType 이 없더라구요. 이부분에서 없는 값을 참조하는데 문제가 생기지 않는 이유를 알 수 있을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 오류
윈도우로 빌드를 하려는데 이렇게 뜨네요 ㅜㅜ
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
AsyncSession 질문입니다.
섹션 17. 2번째 강의에서 "signup(회원가입), login(로그인), create_memo(메모 생성)" 함수에만 db를 AsyncSession으로 사용하고,비동기 처리가 포함된 다른 함수인 "list_memos(메모 조회), update_memo(메모 수정), delete_memo(메모 삭제)" 함수에는 db를 Session으로 사용하는 것 같은데 이유가 있을까요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
ctrl + n constructor생성
강의 15분쯤에 ctrl + n 누르셔서 constructor를 선택하시는데 저는 이런 화면이 떠요..어떻게 해야 할까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findAll
테스트 끝나고나서 데이터를 클리어해주는 방법을 설명하시기 전에 findAll()함수에서 오류가 나타나야 하는데 전 왜.. 다 초록불이 뜰까요package com.example.hello_spring.repository; import com.example.hello_spring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.*; public class MemoryMemberRepositoryTest { MemberRepository repository = new MemoryMemberRepository(); @Test //실행할 수 있게함 public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); //Assertions.assertEquals(result, member); // result와 member가 같은지 확인 assertThat(member).isEqualTo(result); } @Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test public void findAll(){ Member member1 = new Member(); member1.setName("spring"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); List<Member> result = repository.findAll(); assertThat(result.size()).isEqualTo(2); } }
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
사소한것같지만 질문 ..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Override public Member save(Member member) { String sql = "insert into member(member_id, money) values(?,?)"; template.update(sql,member.getMemberId(),member.getMoney()); return member; }@Override public void update(String memberId, int money){ String sql = "update member set money = ? where member_id=?"; template.update(sql, money, memberId); }위에 2개가 강의 내용인데, update()도 초반 코드설계를 @Override public Member findById(Member member){ String sql = "select * from member where member_id = ?"; return template.queryForObject(sql,memberRowMapper(),member.getMemberId()); }이런식으로 Member를 받아와서 설계하는건 좋지않은방법인가요 ? 어차피 필요한건 member 객체 전체가 아니라 member_id하나만 필요하기때문에 ? 강의를 들을때는 이런식으로 설계하면 되는구나 하고 이해는 가는데 혼자서 메서드 설계할때 어떤식으로 접근해서 설계하는게 이상적인지 아직 어렵네요
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
login프로젝트
안녕하세요 로그인 프로젝트 따라하며 공부하는데 회원가입html로 이동해야하는데 로그인html로 이동하더라고요url경로 보니까http://localhost:8081/login?redirectURL=/members/add이렇게 뜨는데 home화면에서 분명 회원가입 html로 가게 설정해뒀는데 왜 회원가입을 누르면 리다이렉트 되는지 모르겠습니다..답변 해주시면 감사하겠습니다!https://drive.google.com/file/d/1FdVqOIvDoSXP-tNytaxKZ_v7YOLW6gP6/view?usp=drive_link
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
/error-500 호출 시 html 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]교재에 나온대로 application-properties를 설정하였는데 왜 /error-500으로 호출하면 /error-ex처럼 나오지 않는건가요 ? 밑에 사진은 application-properties입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
/error-500을 호출하였는데 postHandle이 호출되는 이유?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 선생님 아주 유익한 강의 잘 듣고 있는 수강생 입니다 ! 항상 감사합니다! 강의에서 인터셉터 중 postHandle은 컨트롤러 또는 다른 비즈니스 로직에서 예외가 발생한 경우 postHandle이 호출되지 않는다고 하셨습니다.근데 위 사진을 보시면 postHandle이 호출되고 로그가 나와있습니다. /error-ex는 postHandle이 호출되지 않는 것을 확인했는데 /error-404, /error-500은 postHandle이 호출됩니다.이유가 궁금합니다 !!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
WebServer , WebApplicationServer, Server 관련 질문
Server = 하드웨어 = OS가 없는 PC서버의 역할은 하드웨어 재원을 제공한다로 이해하고 있습니다. 웹서버는 80포트를 열어줌,도메인설정, 정적 컨텐츠 서빙, 로드밸런싱, SSL인증서 설치... 등등의 역할WAS는 동적 콘텐츠 생성, HTTP 메서드 ,비지니스 로직 , 세션처리...등등의 역할 웹서버 , WAS 둘 다 Server 위에서 동작하는 소프트웨어로 서버는 하드웨어 재원을 제공하며서버 위에서 돌아가는 소프트웨어인 웹서버,WAS는 위에 명시된 역할을 수행. 예를들어 Nginx , Tomcat 사용하고 있으면 실제로 서버가 2개 띄워져있어야 함 SpringBoot는 WAS로 톰켓을 내장 그럼 우리가 배포를 한다고 했을때 서버에 SpringBoot Application을 올리고 boot가 Tomcat을 내장하여 WAS로 사용하는 구조간략히 말하면 "xx서버에는 SpringBoot 올라가있어" 라고 말할 수 있음 이렇게 정리를 하였는데 혹시 잘못 이해한 부분이 있을까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
같은 세션을 사용하기 위해서 동일한 커넥션을 사용한다고 했는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]그러면 영한님이 h2데이터베이스로 트랜잭션 설명하실 때 창을 2개 띄워놓고 하셨잖아요 그 때도 2개의 창이 같은 세션을 사용하고 있는건가요?