일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- node.js
- python3
- Spring
- 데이터베이스
- 스프링부트
- BCI
- 장고
- 스프링
- 웹
- mysql
- django
- HTTP
- 자료구조
- java
- 디자인 패턴
- JPA
- db
- rabbitmq
- 자바
- Spring Boot
- 웹 개발
- 파이썬
- 보안
- ORM
- 스프링 부트
- 파이썬3
- bytecode
- Python
- 안드로이드
- 개발
- Today
- Total
목록개발/Java (34)
semtax의 개발 일지
소개 개인적으로 스프링이나 자바쪽을 구글 검색을 하면서 공부하고 있는데, 해당 사이트의 정보들이 구글에 뜨고, 실제로도 유용하게 배운 정보들이 많이 있다. 그래서 다른 사람들도 알면은 좋을거 같아서 같이 공유해보도록 하겠다. https://www.baeldung.com/
개요 이번 포스팅에서는, 스프링부트의 ORM(Object Relation Mapping) 라이브러리인 Spring-data-jpa를 이용하여 실제 데이터베이스에 값을 넣고 빼고, 수정하고, 읽어오는법(CRUD)을 익혀보도록 하겠다. 테이블(Relation) 과 객체의 불일치 이번 섹션은 제 개인적인 견해가 일부 들어가있을수 있으므로, 꼭 다른 사람 의견도 같이 들어서 옳은것을 취사선택 해주시기 바랍니다. 평소에 웹 개발을 하다가 보면, 사용자의 요구사항에 맞게 다양한 형식의 데이터를 받고, 가공해서 데이터베이스(특히 RDBMS)에 저장하는 작업을 많이한다. 결국 개발시에는, (자바기준으로) 데이터를 받아서 객체에 담고 데이터가 담긴 객체(VO, DTO)의 값을 꺼내서 SQL 쿼리에 매핑한다음에(DAO가 ..
개요 이번 시리즈 에서는 스프링 부트를 이용해서 간단한 웹 서버를 만들어 보도록 하겠습니다. 게시판을 만들기에 앞서 이번 포스팅에서는, 스프링 부트가 무엇인지에 대해서와 환경설정을 하는법을 다루도록 하겠습니다. 스프링 부트란? 스프링 부트를 설명하기 전에 먼저 스프링 프레임워크에 대해서 간략하게 설명하도록 하겠습니다. 맨 처음 소프트웨어의 위기가 찾아왔을때, 사람들은 그 고민을 해결하기 위해 객체지향 프로그래밍(OOP) 이라는 패러다임을 도입하였습니다. 하지만 막상 객체지향 프로그래밍을 도입하였음에도 이전보다는 생산성이 늘기는 했지만, 생각 보다 재사용성도 잘 되지 않았고, 유지보수도 여전히 힘들었습니다. 객체지향이나 절차지향, 함수 지향 패러다임 이전에 보다 근본적인 원인을 해결하지 못한 것이지요. 과..
1. Tree API를 이용한 메서드 조작 ASM에서 제공하는 MethodNode는 대략적으로 아래와 같이 생겼습니다. public class MethodNode ... { public int access; public String name; public String desc; public String signature; public List exceptions; public List visibleAnnotations; public List invisibleAnnotations; public List attrs; public Object annotationDefault; public List[] visibleParameterAnnotations; public List[] invisibleParameter..
1. Tree API 이번 포스팅에서는 ASM에서 제공하는 Tree API를 이용해서, 클래스 파일을 조작해보도록 하겠습니다. ASM에서는 클래스 조작을 위한 Tree API인 ClassNode 클래스를 제공합니다. 대략적인 생김새는 아래와 같습니다. public class ClassNode ... { public int version; public int access; public String name; public String signature; public String superName; public List interfaces; public String sourceFile; public String sourceDebug; public String outerClass; public String ou..
1. 자바 제네릭(Generic) & 타입구조 소개 사실 자바 제네릭은, 초창기 자바에는 존재하지 않는 문법이었다. 그래서 타입이나 메서드 정보와 문법적으로 흡사함에도 불구하고, 해당영역이 아닌, 별도의 다른영역에 저장된다. 또한 제네릭같은경우 실제 실행되는 바이트코드에는 영향을 미치지 않기 때문에 별도의 영역에 저장을 해도 따로 문제가 생기지는 않는다. 자바 스펙문서상에서 제네릭의 문법은 아래와 같은 EBNF(Extended Bacus-Naur Form)으로 정의되어있다. 문법의 정의가 꽤나 복잡하다는것을 알 수 있다. TypeSignature: Z | C | B | S | I | F | J | D | FieldTypeSignature FieldTypeSignature : ClassTypeSignatu..
1. JVM은 어떻게 클래스 파일을 실행하는가? 일단 자바가 어떠한 방식으로 컴파일된 클래스 파일을 실행하는지 알아보자. 먼저, JVM(자바 가상 머신)이 컴파일된 클래스파일을 읽어서 메모리에 로딩을 한다. 그 다음에, JVM이 클래스 파일에 있는 바이트코드를 순차적으로 읽으면서 그에 맞는 동작을 수행한다(사실 요즘에는 JVM이 속도를 위해서 자주 사용하는 부분을 파악해서 Just in time 방식을 이용해서 해당 부분을 미리 Native Code로 변환을 해서 실행을 한다). 이때 자바에서는 이러한 바이트코드들을 실행하는 기본 단위가 스레드(Thread)이다. 또한, 자바에서는 각 스레드 별로 Execution Stack(JVM Stack)을 1개씩 가지고 있다. 또한 각 스레드에서 함수를 호출할시 ..
1. 자바 클래스 구조 1-1. 자바 클래스 전체 구조 컴파일된 자바 클래스의 개략적인 구조는 아래와 같이 구성되어있다. 클래스 메타정보 버전, 식별자 등 소스파일 이름 상속관련 정보들 클래스 접근자에 대한 정보 클래스 내에 선언된 필드들의 목록 메서드와 생성자들의 목록 어노테이션 정보 상수 목록들(Constant Pool) 바이트 코드 내부 클래스 정보 그림으로 나타내면 아래와 같다. 1-2. Internal Name 컴파일된 클래스에서, 클래스 이름들은 소스코드와는 다르게 내부적으로 "java/lang/String"과 같은식으로 사용이 된다. 이를 Internal Name이라고 부른다. 참고로, 자바의 Class 클래스를 이용해서 해당 이름을 얻어올 수 있다. 1-3. 타입 및 메서드 명명 규칙 컴파..