JAVA 22

싱글톤 패턴

싱글턴(Singleton) 패턴은 오직 하나의 인스턴스만 생성되도록 보장하고, 해당 인스턴스를 어디서든 접근할 수 있도록 하는 디자인 패턴입니다. 주로 시스템에서 전역적으로 관리해야 할 객체를 만들 때 사용됩니다. 싱글턴 패턴의 특징단 하나의 인스턴스특정 클래스의 인스턴스가 애플리케이션에서 하나만 생성되도록 보장합니다.글로벌 접근생성된 인스턴스는 어디서든 동일한 객체를 참조할 수 있습니다.생성 제어외부에서 클래스의 인스턴스를 직접 생성하지 못하도록 생성자를 제한합니다. 싱글턴(Singleton) 패턴은 오직 하나의 인스턴스만 생성되도록 보장하고, 해당 인스턴스를 어디서든 접근할 수 있도록 하는 디자인 패턴입니다. 주로 시스템에서 전역적으로 관리해야 할 객체를 만들 때 사용됩니다.싱글턴 패턴의 특징단 하나..

JAVA 2024.11.26

로그인 처리

1. 레거시 방식 (Legacy 방식)설명: 레거시 방식은 과거에 주로 사용되던 간단한 로그인 방식입니다. 클라이언트가 서버에 로그인 요청을 보내면 서버는 데이터베이스에서 해당 사용자의 정보를 확인하고, 인증이 완료되면 서버 측에 사용자 정보를 저장해 둡니다.특징:사용자가 로그인하면 서버에서 세션이나 쿠키를 사용해 로그인 상태를 유지합니다.대부분 서버 측에서 사용자 상태를 관리하며, 이로 인해 서버의 부하가 커질 수 있습니다.보안 측면에서 취약한 점이 있을 수 있으며, 특히 세션 하이재킹 공격에 노출될 수 있습니다.사용 예: 과거의 웹 애플리케이션, 기본적인 인증이 필요한 내부 시스템 등에서 사용되었습니다.2. 세션(Session) 방식설명: 세션 방식은 서버가 클라이언트의 로그인 상태를 세션을 통해 관..

JAVA 2024.09.02

JPA -I need Method

회원가입 기능을 만드려고 한다. 그런데 사용자가'흠흠 아이디는 java 비밀번호는 1234로 해야겠어'이렇게 흥얼 거리며 돌아다닌다. 그런데 java는 아이디가 분명 있을 것이다.하.. 어떻게 해야하지?난 JpaRepository에서 상속받은  MemberRepository interface가 있지만 테이블을 조회하는 방법은findById, findAll 밖에 없는걸..?username으로 찾아야하는데.. 가능하다.MemberRepository에 Optional findByUsername(String name); 이라는 Method만 만들어주면 된다.엥?아무것도 구현하지 않았는데 어떻게 저런것이 username으로 찾는다는거야?내가 하고 싶은건 SELECT * FROM member WHERE userna..

JAVA 2024.08.30

요청과 응답 흐름 정리

클라이언트는 정보를 요청한다.요청 방식은 URL GET방식, FORM, AJAX 등 다양한 방식으로 요청한다.Dynamic content를 요청하면 Dispatcher Servlet이 핸들러 매핑으로 적절한 Controller에 매핑시킨다.DB 처리하기 위해 Service 단에서 Repository를 통해 DB에 접근하여 데이터를 가공한다.가공된 데이터를 모델에 담아 Template Engine에 보내고 최종적으로 데이터와 Template File을 html에 보내 최종적으로 랜더링한다. 이 과정에서 View Resolver로 논리적인 뷰를 실제 뷰로 변환하는 등 수 많은 작업이 있지만 대강 큰 틀로 정리해보았다.

JAVA/server 2024.08.28

클라이언트와 서버

클라이언트는 서버에 정보를 요청한다.정보는 두 가지로 나눌 수 있다.1.static2.dynamic정적 정보와 동적 정보이다.정적인 정보는 이미지나 텍스트 등 이미 만들어진 정보이기 때문에 서버에서 신경 쓸 것이 없다.하지만 동적인 정보는 다르다. 쇼핑몰에서  기저귀를 검색했을 때 정보들은 어디서 오는가?데이터베이스에서 가져와야 한다.DB working이 되어야 한다.Data를 CRUD해야 한다. Create는 Entity 어노테이션으로 Entity Class를 만든다.  그러면 데이터를 어떻게 보여줘야 할까?어느정도 사용자 편의성을 생각하여 데이터를 가공해 뷰에 뿌려줘야 된다.template engine과 데이터를 이용하여 가공한 데이터를 가져온다.

JAVA 2024.08.26

Jpa 동작 기본 정리하기

어플리케이션을 구동하면 스프링 프레임워크가 만들 수 있는 객체를 모조리 만든다.@Entity로 클래스를 엔티티화 한다@Id로 기본 키를 설정한다 @GeneratedValue(strategy = GenerationType.IDENTITY) - 오토인크리먼트@Column(nullable = false) - 낫 널오버로딩 생성자 만든다.(오토인크리먼트 되는 id값 빼고) 엔티티화 한 클래스에 관한 interface 생성(xxRepository)xxRepository는 JpaRepository를 상속 받는다.()Jpa에서 어플리케이션 실행 시 구현부를 생성해준다.xx와 관련된 컨트롤러는 @Autowired로 의존성을 주입하여프라이빗으로 참조변수를 멤버변수로 만든다.(xxRepository)오버로딩된 생성자로 파..

JAVA 2024.08.23

복제 생성자

복제 생성자(Copy Constructor)는 객체 지향 프로그래밍에서 사용되는 개념으로, 주어진 객체의 필드를 그대로 복사하여 새로운 객체를 생성하는 생성자입니다. 이를 통해 새로운 객체가 생성되면서 기존 객체와 동일한 값들을 가지지만, 서로 독립된 객체로 존재하게 됩니다.복제 생성자의 역할:깊은 복사(Deep Copy): 복제 생성자는 객체의 필드가 참조 타입(예: 객체, 배열 등)일 때, 그 필드를 깊은 복사하여 새로운 객체를 생성할 수 있습니다. 깊은 복사를 통해 원본 객체와 새 객체가 참조하는 필드가 서로 독립적으로 존재하게 됩니다.얕은 복사(Shallow Copy): 반면, 단순한 얕은 복사는 객체의 필드가 참조하는 메모리 주소를 그대로 복사하여 원본 객체와 새 객체가 동일한 필드를 참조하게 ..

JAVA 2024.08.19

List

List는 많이 써보았을 것이다. 다양한 종류의 구현체의 List들이 존재한다.그 중에서도 ArrayList와 LinkedList, Stack을 주로 많이 사용할 것이다. ArrayList의 생성과 초기화는ArrayList arrayList = new ArrayList(); 이다 그런데 이렇게 쓰지않고List arrayList = new ArrayList(); 이렇게 선언하는 경우가 많을 것이다. 상속의 개념을 알아야 이해할 수 있는 코드이다.javadoc에서 ArrayList에 대해 알아보면All Implemented Interfaces:Serializable, Cloneable, Iterable, Collection, List, RandomAccess RandomAccess (Java Platform..

JAVA 2024.08.14

상속(extends)

상속이란?우리는 상속이라는 단어는 어디 드라마에서나 재산 상속 문제로 싸우는 것 외엔 잘 접하지 않는다. 이것이 클래스에서도 가능하다.일단 기본구조부터 보자class A extends B {}외국에서는 흔히 'A가 B로부터 확장 되었다' 라고 한다.B클래스는 부모 클래스이고 A는 자식 클래스가 된다.자식 클래스는 부모 클래스의 기능을 온전히 쓸 수 있다.class B { void print(){ System.out.println("나는 부모"); }}psvm { A a = new A(); a.print(); // "나는 부모"}A 클래스에서 B 클래스의 메소드에 접근할 수 있다.물론 private라면 불가능하지만 public이나 protected일때 가능하다. 자식 클래스에서 부모 클래..

JAVA 2024.08.08