AJAX
Fetch API , XMLhttpRequest 이용해 서버와 통신할 수 있다.
XMLhttpRequest이 XML만 사용하는 것이 아닌 여러 데이터 전송방식을 사용할 수 있습니다. 공개 API를 만들 때 이름의 중요성을 느끼게 하는 부분입니다.
XML을 사용하면 가독성이좋지않고 불필요한 태그들이 들어가 파일의 사이즈가 커진다.
대신 JSON을 많이 사용하는 추세입니다.
JSON
simlest data interchange format : 데이터를 주고받을 때 쓸 수 있는 가장 간단한 파일 포맷
lightweight text-based structure : 텍스트를 기반으로 한 가벼운 구조이며
easy to read : 가독성이 뛰어나며
key and value pairs : key값과 value 값으로 이루어진 한쌍이며
used for serialization and transmission of data betwwen the network the network connection : 데이터를 보통 서버와 주고받을 때 직렬화 하기 위해 사용됩니다.
independent programming language and platform : 프로그래밍 언어나 플랫폼에 상관없이 독립적으로 사용될 수 있다는 것입니다.
object를 serialize 해서 제이슨으로 어떻게 변환할지
object -> serialize ->(string) JSON
직렬화된 json을 deserialize 해서 다시 object로 변환할지
(string) JSON -> deserialize ->object
1. Object to json
object를 json으로 만들기 위한 방법
JSON.stringify(object, callbackFunction)
callbackFunction은 세부적으로 object를 조절하기 위한 함수입니다.
2. Json to object
json을 object로 만들기 위한 방법
JSON.parse(object. callbackFuntcion)
3.json으로 변환할 경우 함수는?
만약 object가 함수를 포함하고 있다면 함수는 json으로 변환되지 않습니다.
그렇기에 object를 json으로 변환한 다음 다시 object로 변환한다음
obj.function(); 을 하게 되면 오류가 발생하게 됩니다.
그럴 경우 callbackFuntion을 이용해야 합니다.
DB모델링
무언가를 구현하기 위해 구현체를 끄적거려야 합니다.
끄적거림의 범위는 무제한입니다. 개발자가 그 범위를 지정할 수 있습니다.
설계에서 개념을 잡고 논리적인 구조를 잡고 설계를 마무리해 구현을 하면 됩니다.
개념적 설계에서 ER다이얼 그램을 사용하는 경우가 있는데 ER다이얼 그램은 E와 R을 찾는 것입니다.
전산 세계에서 E는 네모이며 R은 마름모를 사용합니다.
무엇이 E인가? 정의되지 않고 애매모호합니다. 명사 거나 주체 대상이거나 , 행위 대상이거나 업무에 따라 달라질 수 있을 수 있습니다.
R은 실질적인 행위를 이야기합니다.
데이터를 쌓는 핵심은 행위자가 있으며 행위자가 행위를 하여야 데이터가 생성됩니다. 두 가지를 중점적으로 모면 모델링이 간단해집니다.
어느 시점에 만들어지냐에 따라서 테이블의 생성이 결정될 수 있습니다.
관계의 따라서 테이블을 정의할 수 있으며 1:N N:N 1:1 관계로 참고할 수 있습니다.
행위를 할 경우에 Entity가 생성될 경우는 행위적인 속성이 Entity에 포함되어야 합니다.
또한 포함될 경우 행위 이름+Entity으로 이름을 지어야 혼동되지 않을 수 있습니다.
옵션적인 부분은 있어도 되며 없어도 된다. 따로 테이블을 만드는 것이 바람직하다.
ACID
- 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.
- 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
- 독립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌 간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행 내역은 연속적이어야 함을 의미한다. 성능 관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다. 자세한 내용은 관련 문서를 참조해야 한다.
jdbc라이브러리에 독립성을 유지하기 위한 속성이 존재한다. 유효 범위가 존재하는데 레코드만 잠그거나 테이블을 잠글 수 있다.
- 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.
conn.setAutoCommit(false) 시 테이블이 잠겨버립니다.
따라서 성공적으로 트랜잭션을 처리했을 경우
conn.commit을 해야 하며
예외나 오류가 발생한 경우
conn.rollback을 해야 합니다.
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 62일차 -94 (0) | 2020.06.03 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 61일차 -93 (0) | 2020.06.02 |
자바기반의 웹&앱 응용 SW개발자 양성과정 59일차 -91 (0) | 2020.05.28 |
자바기반의 웹&앱 응용 SW개발자 양성과정 58일차 -90 (0) | 2020.05.27 |
자바기반의 웹&앱 응용 SW개발자 양성과정 57일차 -89 (0) | 2020.05.26 |
댓글