본문 바로가기

전체 글382

[JPA] Entity의 4가지 상태 하이 ... 오늘은 엔티티의 4가지 상태를 나타내는 Entity의 생명주기를 정리해 두려고 한다. Entity LifeCycle 1. 비영속 상태 (new / transient) Book book = new Book(); // 단순하게 객체로 생성된 상태임. - 순수한 객체 상태 - 영속성 컨텍스트와 관련이 아예 없는 상태를 의미 2. 영속 상태 (managed) em.persist(book); // 객체를 영속성 컨텍스트에 저장한 상태 - EntityManager를 통해 엔티티를 영속성 컨텍스트에 저장한 상태 - 영속성 컨텍스트가 해당 엔티티를 관리하게 된 상태임 3. 삭제 (removed) em.remove(book); // 영속성 컨텍스트, db에서 삭제 - 엔티티를 영속성 컨텍스트와 db에서 삭제.. 2021. 8. 8.
[Database] 트랜잭션이란 뭘까? 오늘은 트랜잭션에 대해 정리를 해두려한다. 트랜잭션(Transaction)이란? 트랜잭션(Transaction)의 정의를 내려보자면, 트랜잭션은 Database의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위나 한번에 수행되어야할 일련의 연산을 의미한다. 트랜잭션(Transaction)의 특징 트랜잭션의 특징으로는 첫째, Database 시스템에서 병행제어 및 회복 작업이 수행될 때 처리 되는 작업의 논리적 단위 이며, 둘째, 사용자가 어떠한 시스템에 서비스를 요청할 때 시스템이 응답하기 위한 상태 변환 과정의 작업단위 이고, 셋째, 각 트랜잭션은 Commit 혹은 Rollback 되어야 한다. 여기서 Commit 연산은 하나의 논리적인 단위인 트랜잭션에 대한 작업이 성공적으로 끝났으며.. 2021. 8. 7.
[Design Pattern] Adapter 패턴 하이.. 요즘 전에 했던 프로젝트를 복기해보면서 어떤 기술을 썼는지 하나씩 정리해 가고 있다. 오늘은 전에 회사에서 간편로그인 시스템을 구축할때 썼던 패턴이었던 Adapter 패턴에 대해 정리해보려한다. 개발 당시 이런 이슈가 있었다. 기존에 사용하던 로그인 서버가 있었고, 내가 구축하던 간편로그인 기능을 해당 서버에 추가해야하는 상황이 발생했다. 그러기 위해서는 기존 로그인 모듈이 있던 클래스를 고쳐야 하는 위험?이 있었는데, 이를 Adapter 패턴으로 잘 풀어 냈다. Adpater 패턴을 이용하면 기존의 클래스를 고치지 않고 필요한 기능은 별도의 Adapter를 구현하여 이용할 수 있다. 이 Adapter 에서는 기존 클래스 기능을 그대로 사용할 수도 있고, 수정해서 사용할 수도 있고 , 새롭게 고.. 2021. 8. 5.
[Java] JVM GC 기본 동작 방식 이해하기 예전에 내가 JVM 메모리가 어떻게 관리되는지 포스팅을 했었다. https://devkingdom.tistory.com/226 [JAVA] JAVA 메모리 이야기 - Stack 과 Heap 하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸 devkingdom.tistory.com 오늘은 Heap 영역의 메모리를 청소하는 Garbage Collector 에 대해 알아보려고한다. 먼저 GC가 무엇인지부터 말씀드리겠다. GC는 JVM의 Heap 영역에서 사용하지 않는 객체를 없애주는 프로세스를 의미한다. Heap 영역에는 다양한 객체들이 올라와 있는데 이 객체.. 2021. 8. 4.
[PostgreSQL] 외부접속 가능하게 설정하기 오늘은 PostgreSQL 에서 외부에서 접속이 가능하도록 하는 설정을 정리해두려고 한다. 혹시 설치하는 방법이 궁금하면 아래의 링크를 보고 따라해보면 금방 알수 있다. https://devkingdom.tistory.com/266 먼저 해줘야할게 postgreSQL의 기본 포트인 5432 방화벽 포트를 개방해줘야한다. firewall-cmd --permanent --zone=public --add-port=5432/tcp firewall-cmd --reload 방화벽을 열고나면 두가지 설정파일의 정보를 변경해줘야한다. db같은 경우에는 특정 아이피만 접속하게 해주는게 맞는데, 실습이니... 전체 구간에 대해 접속이 가능하도록 우선 바꿔주려 한다. 다음은 postgre에 접속하여 data 디렉토리의 위치.. 2021. 8. 2.
[PostgreSQL] PostgreSQL 설치 및 기본 동작 방법 오늘은 리눅스 환경 (CentOS7) 에서 간단하게 PostgreSQL을 설치하고 기본적으로 운영하는 방법에 대해 포스팅 해보려고 한다. 먼저 설치전에 yum udate를 해주자. yum update -y 다음은 만약 인터넷 환경이 되신다면 yum install을 통해서 PostgreSQL 을 설치하자. sudo yum install -y postgresql-server.x86_64 postgresql-devel.x86_64 postgresql-contrib.x86_64 postgresql-docs.x86_64 다음은 잘 설치 되었는지 확인을 해보자. yum list insalled | grep postgresql 다음은 db 계정을 만들어주자. 아래 명령어를 쳐주면 postgres라는 이름으로 db가 .. 2021. 8. 2.
백트래킹 (Back Tracking) 알고리즘 이해하기 하이 오늘은 백트래킹 알고리즘을 정리해두려고한다. 먼저 백트래킹 알고리즘을 알려면 DFS알고리즘을 정확하게 알고 있어한다. 혹시 DFS 에 대해 잘 모르겠다 싶으면 아래 링크를 차곰해서 보고 오자. https://devkingdom.tistory.com/263 DFS (Depth-First Search) 알고리즘 정리 오늘은 알고리즘에서 가장 중요한 개념중에 하나인 DFS에 대해 설명을 드리고자 한다. DFS는 다양한 경우의 수를 구할때 굉장히 많이 쓰이는 알고리즘이나 꼭 익혀두길 권장한다. 일단 코드소스 devkingdom.tistory.com 백트래킹 알고리즘은 dfs 알고리즘 방식으로 가장 깊은 레벨까지 가서 정답인지 체크하고 아니면 그노드의 부모로 돌아가서 다른 자식노드를 체크하고 이렇게 쭈우우우.. 2021. 7. 29.
BFS (Breadth-First Search) 알고리즘 정리 저번 포스팅에서 내가 DFS 에 대하 포스팅을 했었다. DFS 알고리즘이 경우의수를 찾기 위해 사용하는 알고리즘이라면, BFS 알고리즘은 최단 거리를 찾기 위해 사용하는 알고리즘이라고 생각하면 좋을 것 같다. 먼저 코드를 보여드리겠다. import java.util.LinkedList; import java.util.Queue; public class BFS { public static void main(String args[]) { BFS tree = new BFS(); Node root = new Node(1); root.lt = new Node(2); root.rt = new Node(3); root.lt.lt =new Node(4); root.lt.rt = new Node(5); root.rt.l.. 2021. 7. 28.
DFS (Depth-First Search) 알고리즘 정리 오늘은 알고리즘에서 가장 중요한 개념중에 하나인 DFS에 대해 설명을 드리고자 한다. DFS는 다양한 경우의 수를 구할때 굉장히 많이 쓰이는 알고리즘이나 꼭 익혀두길 권장한다. 일단 코드소스를 먼저 보여드리겠다. public class DFS { public static void main(String args[]) { DFS tree = new DFS(); Node root = new Node(1); root.lt = new Node(2); root.rt = new Node(3); root.lt.lt =new Node(4); root.lt.rt = new Node(5); root.rt.lt = new Node(6); root.rt.rt = new Node(7); tree.dfs(root); } publi.. 2021. 7. 28.