1.도달 가능성(reachability)도달 가능성은 객체가 영속성 컨텍스트에 포함될 수 있는지를 결정하는 개념이다.즉, 영속화될 자격이 생긴다는거다.(영속화되는게 아니라 자격이 생긴다는것) 객체 간의 참조 관계에 의해 한 객체가 다른 객체를 참조하고 있으면, 참조된 객체는 도달 가능하게되고 도달 가능한 객체는 영속성 컨텍스트에 의해 관리되며, 데이터베이스와의 동기화가 이루어진다. 만약 다음 같은 3개의 객체가 있다고 볼때, 지금 Aricle은 Board와 Member 객체를 참조관계로 가지고있다.public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany..
BackEnd/SpringBoot
0.개요https://asa9874.tistory.com/699 [SpringBoot] STOMP WebSocket 1:1 메시징 사용자별 구독관리https://asa9874.tistory.com/697 [SpringBoot] React + SpringBoot + JWT + Stomp으로 WebSocket 채팅 구현하기1.STOMP(Simple Text Oriented Messaging Protocol)텍스트 기반의 메시징 프로토콜으로 웹소켓과 함께 사용되어 클라이언asa9874.tistory.com해당 글의 이어서이다. 이제 websocket을 이용해서 실시간 채팅방을 만드는것을 완성하였다.그러면 이제 채팅방에 이미지를 업로드 하는 기능을 만들어보자.(AWS 써서 하는거 말고 로컬에서하는 이미지 업로드..
https://asa9874.tistory.com/697 [SpringBoot] React + SpringBoot + JWT + Stomp으로 WebSocket 채팅 구현하기1.STOMP(Simple Text Oriented Messaging Protocol)텍스트 기반의 메시징 프로토콜으로 웹소켓과 함께 사용되어 클라이언트와 서버 간의 실시간 통신을 간편하게 구현할 수 있게 해준다.STOMP 없이도 WebSocket으asa9874.tistory.com해당 내용의 이어서이다. 저번글에서 채팅방에 들어가면 웹소켓으로 서로 연결 되는것을 확인하였다. 하지만 보통 채팅프로그램에서 채팅방에 들어가지않는다고 해도 채팅방 목록에서 새로운 채팅이 업데이트 되는것이 보여야한다! 1.WebSocketConfig..
1.ORM(Object-Relational Mapping)객체 지향 프로그래밍 언어에서 데이터베이스의 테이블과 객체를 매핑해주는 기술이다. 이거는 현재 id를 기준으로 DB에서 Board 데이터를 찾은뒤 그걸 Board 객체로 변환후 반환해주는 JDBC로 작성한 메서드이다.직접 SQL을 작성해야하고 그 조회한 정보를 또 Board 객체로 변환해야하는 과정이 너무 번거롭다.@Repositorypublic class BoardRepository { @Autowired private JdbcTemplate jdbcTemplate; public Optional findById(Long id) { String sql = "SELECT id, name FROM board WHERE ..
1.STOMP(Simple Text Oriented Messaging Protocol)텍스트 기반의 메시징 프로토콜으로 웹소켓과 함께 사용되어 클라이언트와 서버 간의 실시간 통신을 간편하게 구현할 수 있게 해준다.STOMP 없이도 WebSocket으로 실시간 소통을 할수 있지만 메시지 라우팅, 구독, 인증 헤더 등이 필요하므로 STOMP를 선택했다. 1-1.STOMP 커맨드STOMP는 다음과 같은 커맨드들을 지원한다. CONNECT서버와 연결 시작SEND메시지 발송SUBSCRIBE특정 채널(주제) 구독UNSUBSCRIBE채널 구독 해제MESSAGE서버 → 클라이언트 메시지 전송DISCONNECT연결 종료ERROR에러 메시지 전송 1-2. STOMP 메시지 구조STOMP 메시지는 다음처럼 명령, 헤더,..
1.DI(Dependency Injection)우선 DI의 개념을 알아야한다. 객체가 필요로 하는 의존 객체를 직접 생성하지 않고, 외부에서 주입받는 방식을 의미하며즉 new 로 내가 클래스에서 개체를 따로 만드는게 아니라 외부에서 주입해주는것이다. 이거는 DI를 사용하지않은 예제로 UserService에서 UserRepository 개체를 new로 생성한다.public class UserService { private UserRepository userRepository = new UserRepository(); // 직접 생성} 이게 DI 방식으로 생성자로 의존성을 주입해주는 방식이다.보면 UserService는 생성자로 개체를 만들때 외부에서 userRepository 개체를 받아서 생성해..
0.JDBC란SQL을 실행하여 결과를 처리할 수 있도록 해주는 자바 표준 API이다.주로 JPA 로 고수준으로 사용하긴하지만 JPA 내부도 결국 JDBC로 구현되어 있기 때문에 이번기회에 한번 사용해 보았다.DriverManager를 통해서 DB연결을 한다. spring.datasource.driver-class-name으로 JDBC 드라이버 클래스를 때문에 DB연결을 위해 설정해줘야하는데mySQL의 경우 com.mysql.cj.jdbc.Driver이다.spring: datasource: url: jdbc:mysql://localhost:3306/bcsd?serverTimezone=Asia/Seoul username: password: driver-class-name: com.mysql..
0.MySQL 설치공식 사이트에서 MySQL을 설치한다.https://downloads.mysql.com/archives/installer/ MySQL :: Download MySQL Installer (Archived Versions)Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Installer, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.downloads.mysql.com 1.appli..